android - 即使我得到另一个实例,也可以从正确的线程进行 Realm 访问

标签 android multithreading android-asynctask realm

我正在尝试检索一些数据并在 AsyncTask 中更新它们。 问题是我从错误的线程获得
Realm 访问权限。 Realm 对象只能在创建它们的线程上访问。
即使我在异步任务中更新 Realm 实例,也会出错。
这是我的代码:

 new AsyncTask<Void, Void, Void>(){
            @Override
            protected Void doInBackground(Void... params) {
                mRealm = Realm.getDefaultInstance();
                // my queries & updates
                return null;
            }
 }.execute();

最佳答案

尝试在onPreExecute()方法中创建默认实例。

new AsyncTask<Void, Void, Void>(){
            private Realm mRealm;
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                mRealm = Realm.getDefaultInstance();
            }

            @Override
            protected Void doInBackground(Void... params) {
                // my queries & updates
                return null;
            }
        }.execute();

希望对您有帮助。

关于android - 即使我得到另一个实例,也可以从正确的线程进行 Realm 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965819/

相关文章:

java - 从异步线程访问Android Activity 堆栈?

Android 异步 Http 客户端 (loopj) 和持久性 Cookie 存储

java - 无法在 AsyncTask 中启动新 Activity

java - For 点运算符中的循环计数器

android - 尝试将数据库信息分配给 ArrayList,然后分配给 ListView

multithreading - 在不支持 OpenMP 的情况下构建 BLAS、ATLAS 和 LAPACK

java - 排队多个下载,寻找生产者消费者 API

android - 取消另一个后的 AsyncTask

android - supportFragmentManager 变量在哪里定义?

java - 什么更快 - 将数据存储在列表中或数据库中? (安卓)