【问题标题】:Access realm object inside AsyncTask访问 AsyncTask 中的领域对象
【发布时间】:2016-06-07 14:18:53
【问题描述】:

当我尝试从异步任务访问领域数据时,我总是收到此错误:

  06-07 16:13:38.745: E/AndroidRuntime(21340): FATAL EXCEPTION: AsyncTask #2
  06-07 16:13:38.745: E/AndroidRuntime(21340): Process: nl.hgrams.passenger, PID: 21340
  06-07 16:13:38.745: E/AndroidRuntime(21340): java.lang.RuntimeException: An error occurred while executing doInBackground()
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at android.os.AsyncTask$3.done(AsyncTask.java:309)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.util.concurrent.FutureTask.run(FutureTask.java:242)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.lang.Thread.run(Thread.java:818)
  06-07 16:13:38.745: E/AndroidRuntime(21340): Caused by: java.lang.IllegalStateException: Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created.
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at io.realm.BaseRealm.checkIfValid(BaseRealm.java:404)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at io.realm.PSUserActivityMonthRealmProxy.realmGet$weeks(PSUserActivityMonthRealmProxy.java:134)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at nl.hgrams.passenger.model.PSUserActivityMonth.getWeeks(PSUserActivityMonth.java:83)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at nl.hgrams.passenger.activities.PSProfileActivity$8$1.doInBackground(PSProfileActivity.java:361)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at android.os.AsyncTask$2.call(AsyncTask.java:295)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  06-07 16:13:38.745: E/AndroidRuntime(21340):  ... 4 more

如何访问 AsyncTask 中的数据?我尝试使用领域查询调用再次从数据库中获取数据,但我仍然遇到此问题

【问题讨论】:

  • 请显示您尝试访问它的代码。这样我们就更容易为您提供指导。

标签: android database asynchronous android-asynctask realm


【解决方案1】:

对于每种想要使用的方法,都有对应的 Async,例如:

RealmResults<User> result = realm.where(User.class)
                          .equalTo("name", "John")
                          .or()
                          .equalTo("name", "Peter")
                          .findAllAsync();

来自their website

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多