所以在 aIntentService
中,应用程序可能是活动的或非活动的,onHandleIntent
被调用,我把它放在下面的代码中。这是我将数据存储到领域的地方。
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
for (AppItem item : items) {
AppItem item2 = realm.createObject(AppItem.class, UUID.randomUUID().toString());
item2.mName = item.mName;
item2.mCount = item.mCount;
item2.mUsageTime = item.mUsageTime;
}
}
});
} finally {
if (realm != null) {
realm.close();
}
}
然后我试图在onPostExecute
in 中AsyncTask
访问它doInBackground
,我得到了RealmResults<AppItem>
,然后将其存储到List <AppItem>
并将其发送到onPostExecute
放置此代码的位置。appItems
这里是 ReamObject
Realm backgroundRealm = Realm.getDefaultInstance();
backgroundRealm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
for (AppItem item : appItems) {
//getting error here if (item.mUsageTime <= 0) continue;
mTotal += item.mUsageTime;
item.mCanOpen = mPackageManager.getLaunchIntentForPackage(item.mPackageName) != null;
}
}
});
我都使用过executeTransactionAsync
,但仍然出现以下错误。
java.lang.IllegalStateException: Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created.