我们的应用程序要求每 12 小时对我们的数据库执行一次更新,这需要:下载数据 -> 处理它 -> 将它写入 Realm 数据库 目前我们的实现是一个RxJava,它在用户使用应用程序时运行在应用程序主进程上,例如:
Observable.create(emitter -> {
// Do some heavy work, such as reading, parsing and saving a big XML file to a database
emitter.doOnNext(); // To update the UI
//Eventually emitter.onComplete() when job is down
})
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(s1 -> {
//Update the UI here (nothing heavy, just a textview)
})
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete(() -> {
//Show a message to the user that the job is done
})
.subscribe();
我们在使用该方法时遇到了很多低端设备内存不足的问题,我们已经尽可能多地优化了 RxJava 调度程序中数据的处理和保存,但我们正在寻找新的方法实现方法运行的方式。 例如,我们正在考虑使用 WorkManager 和 Worker 类来安排后台作业,并想知道它是否可以改善我们的数据保存过程。
欢迎就如何解决这个问题提出任何建议和想法:)