Таким образом, внутри IntentService
, приложение может быть активным или неактивным, вызывается 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
в 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.