gpt4 book ai didi

java - Android Realm 中的一对多关系。处理线程

转载 作者:行者123 更新时间:2023-11-29 19:35:43 25 4
gpt4 key购买 nike

通过将一首歌分配给一个乐队,我有一个一对多的关系,一个乐队有很多首歌。所以最后我分配了 song.setBand( band )。这一切都是有道理的,因为乐队是从 listView 中挑选出来的。问题出在通过尝试向乐队添加新歌曲来使用 executeTransationAsync 时。如果没有选择乐队,它会起作用,但否则我会遇到线程问题。在处理当前线程时,我不得不再次选择乐队。有更好的解决方案吗?

public void add( Song song ){

int bandId = song.getBand().getId();

realm.executeTransactionAsync(thisRealm->{

Number nextID = thisRealm.where(Song.class).max("id");

if( nextID != null ){
song.setId( nextID.intValue() + 1 );
}else{
song.setId( 0 );
}

Band band = thisRealm.where(Band.class).equalTo( "id", bandId ).findFirst();

if( band != null ){
song.setBand( band );
}else{
song.setBand( null );
}

thisRealm.copyToRealm( song );
},
()->{
publishSubject.onNext( song );
},
error->{
publishSubject.onError( error );
});
}

最佳答案

截至 2016 年 8 月 29 日,这是使用异步事务保存具有一对多关系的对象的正确方法。感谢您对留下评论的人的帮助。

关于java - Android Realm 中的一对多关系。处理线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39213486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com