2016-12-23 93 views
0

我在我的Android應用程序與境界麻煩。我想要做的就是使用rxJava,並且我有一個服務讓我能夠訪問Realm的實例,例如這裏是https://realm.io/news/using-realm-with-rxjava/Android的境界性能比較

public Observable<List<InboxRealmEntity>> getDatabaseChangeObserver(final String accountId) { 
    return RealmDatabaseProvider 
     .getInstance(configuration, 
      realm -> realm 
       .where(InboxRealmEntity.class) 
       .contains(InboxRealmEntity.ACCOUNT_ID, accountId) 
       .findAll() 
       .asObservable() 
       .filter(RealmResults::isLoaded) 
       .map(inboxRealmEntities -> inboxRealmEntities.sort(InboxRealmEntity.CREATED_AT, Sort.DESCENDING))) 
       .switchMap(realmResultsObservable -> realmResultsObservable); 
} 

但是當我打開我的查看和期望的境界即時響應,其中有100條記錄。它需要大約3或4秒而不是。請指教,我做錯了什麼?

+0

什麼是RealmDatabaseProvider? – EpicPandaForce

回答

0

應該

public Observable<List<InboxRealmEntity>> getDatabaseChangeObserver(final String accountId) { 
    return RealmDatabaseProvider.getInstance(configuration, 
      realm -> realm 
       .where(InboxRealmEntity.class) 
       .contains(InboxRealmEntity.ACCOUNT_ID, accountId) 
       .findAllSorted(InboxRealmEntity.CREATED_AT, Sort.DESCENDING) 
       .asObservable(); 
} 

InboxRealmEntity,您createdAt字段添加@Index

+0

謝謝!似乎它的作品!你能解釋爲什麼嗎? –

+0

我其實不確定,我只是覺得你有一些不必要的映射正在進行,事實確實如此。 – EpicPandaForce