gpt4 book ai didi

java - 数据未存储到领域数据库中

转载 作者:行者123 更新时间:2023-12-02 13:36:49 27 4
gpt4 key购买 nike

java.lang.IllegalStateException: Your Realm is opened from a thread without a Looper and you provided a callback, we need a Handler to invoke your callback

我正在编写一个在后台执行的代码 - 从文本文件( Assets 内部)读取,然后将它们放入领域数据库中。但我似乎收到此错误

“java.lang.IllegalStateException:您的领域是从没有 Looper 的线程中打开的,并且您提供了回调,我们需要一个处理程序来调用您的 回调”

在我的 onCreate 中我有这个

    Realm.init(context);
realm = Realm.getDefaultInstance();

ParseInBackground task = new ParseInBackground();
task.execute();

在 AsyncTask 的后台任务中我得到了这个

try {
realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {

final ModelClass modelClass = bgRealm.createObject(ModelClass.class);
try {
InputStream file = getAssets().open("goodie.txt");
reader = new BufferedReader(new InputStreamReader(file));
final String[] line = {reader.readLine()};
while (line[0] != null) {
handler.post(new Runnable() {
@Override
public void run() {
try {
line[0] = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
String[] namelist = line[0].split(":");
String iWord = namelist[0];
String iDesc = namelist[1];
modelClass.setName(iWord);
modelClass.setDesc(iDesc);
count++;

}
});

}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (realm != null)
realm.close();
}
}

}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "Added " + count + "items", Toast.LENGTH_SHORT).show();
}
}, new Realm.Transaction.OnError() {

@Override
public void onError(Throwable error) {


}
}
);
} catch (Exception e) {
e.printStackTrace();
}

一个名为 ModelClass 的模型类有这个

private String name;
private String desc;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}

迫切需要帮助。提前致谢

最佳答案

检查http://developer.android.com/reference/android/os/Handler.htmlhttp://developer.android.com/reference/android/os/Looper.html

基本上,Realm 在进行异步查询时需要一种与线程进行通信的方法,在 Android 上,自然 Looper 和 Handler 是最佳选择。

查看更多示例代码。 https://github.com/realm/realm-java/tree/master/examples/threadExample

关于java - 数据未存储到领域数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42947457/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com