[英]One to many relationship in Android Realm. Dealing with threads
通過將一首歌曲分配給一個樂隊,我具有一對多的關系,並且一個樂隊有很多歌曲。 所以最后我要分配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日,這是使用異步事務保存具有一對多關系的對象的正確方法。 感謝您對那些發表評論的人的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.