我在每个位置更改侦听器的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