我在每個位置更改偵聽器的LocationService類中編寫realm db,並在Activity中列出此更改以更新UI。最初它工作正常,但是當realm db中的條目數量超過2K時,它會開始阻止UI。任何人都請建議。從導致UI塊的服務類中編寫領域
回答
是的,問題是服務運行在MainThread(UI線程默認情況下)。你需要在後臺線程上異步寫入數據。請注意,Realm實例是線程相關的,它必須在單個寫入事務中被取消並釋放。 考慮使用IntentService - 默認情況下它具有後臺線程,或者使用rxJava庫來組織後臺作業 - 這是最簡單的方法。 這裏是一個代碼,它是如何做到:
PublishSubject<Location> locationSource = PublishSubject.create();
// bind to location source for receiving locations
Observable<Integer> saveToDbTask =
locationSource.asObservable()
// this line switches execution into background thread from embedded thread pool
.observeOn(Schedulers.computation())
.map(location -> {
int result -> saveLocationToDb(location);
return result;
});
// subscribe to that task when you start
Subscription subscription = saveToDbTask.subscribe(t -> {
Log.i(LOG_TAG, "Result: " + t);
});
// unsubscribe when it is no longer needed
if (null != subscription && !subscription.isUnsubscribed()){
subscription.unsubscribe();
subscription = null;
}
// tunnel location from your FusedLocationApi's callback to pipeline:
Location loc = new Location(..);
locationSource.onNext(loc);
謝謝亞歷克斯,你是對的。然而,我的老闆讓我不要使用IntentService :-(。 – Vid
然後創建普通服務,將位置更新回調綁定到PublishSubject
我已更新回答 –
- 1. 導致UI線程凍結的多個領域事務
- 2. 領域0.89導致UnsatisfiedLinkError
- 3. 導致NullPointerException的片段中的領域
- 4. 從填寫領域
- 5. 重寫:Cookie域中的領導點
- 6. 報表服務從多個領域
- 7. 從WCF服務訪問領域驅動的設計類LIbraries
- 8. 接入服務領域AngularJS
- 9. 領域:使用服務器同步領域時,本地領域是否存在?
- 10. 意向服務的領域同步寫入
- 11. Angular2服務的領域的問題
- 12. @JsonPropertyOrder和領域,從超類
- 13. 領域類型的領域遷移long
- 14. 從領域創建獨立對象導致android
- 15. 查看另一個領域類中的grails領域類屬性
- 16. 建立新的服務領導者並通知領導
- 17. 如何在領域驅動設計中爲領域模型編寫領域邏輯?
- 18. 使用Swift 3.0編譯的領域Swift模塊無法在Swift 3.0.1中導入
- 19. Grails領域類
- 20. 類領域
- 21. simpleSAMLphp和wso2身份服務器 - 領域
- 22. REST服務消費,領域模型
- 23. 使用領域和服務使用MVVM
- 24. 以編程方式添加jQuery UI滑塊導致問題
- 25. 軌驗證從功能填寫領域
- 26. 如何從SharePoint服務器獲得可用的ADFS服務器和領域?
- 27. 從MongoDB的領域
- 28. 分類網站業務領域
- 29. 發佈類領域的另一個類領域
- 30. Symfony2的:收集驗證導致實體領域的錯誤
*請人建議* ...好像你需要改變你的代碼... – Selvin
喔,謝謝Selvin ...而不是簡單地降如果你知道一些事情,你應該給我一個想法。我不想爲此使用IntentService。 – Vid
反而咆哮,你應該提供你的代碼...大多數程序員不使用魔法球,所以沒有代碼很難說什麼是問題... – Selvin