簡體   English   中英

Android Realm中的一對多關系。 處理線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM