您好我的Android应用程序上运行了一个服务。
在该服务中,我有一个TimerTask
,我在同步主UI线程上保存的数据和每5秒运行TimerTask
时遇到问题。
示例
UI线程 - 100条记录
TimerTask线程 - 0记录
每次TimeTask
我关闭该线程上的Realm实例,试图在下次执行时获取更新的实例。
我似乎关闭选项不会从缓存中间删除实例,因此下次我Realm.getInstance()
时它会提供与之前相同的内容。
关于如何在运行TimerTask
时让两个线程具有相同数据的任何想法?
答案 0 :(得分:0)
你可以做一个可以在1.1.1和1.2.0中运行的黑客攻击(它会在2.0.0之后中断,但是嘿),这会强制新打开的Realm成为最新的实例 -
您可以使用package-internal stuff强制通过与Realm实例关联的HandlerController
更新本地线程
package io.realm;
public class RealmRefresh {
public static void refreshRealm(Realm realm) {
Message message = Message.obtain();
msg.what = HandlerControllerConstants.LOCAL_COMMIT;
realm.handlerController.handleMessage(msg);
}
}
然后致电
realm = Realm.getDefaultInstance();
RealmRefresh.refreshRealm(mRealm);
//...
realm.close();