【发布时间】:2015-09-25 04:03:00
【问题描述】:
我正在尝试使用异步任务在片段内的 TextView 中显示消息,但我只希望它在选中复选框时显示。如果我在 doInBackground 中添加 if 语句,我会收到错误:
1544-1553/android.process.acore E/StrictMode:在附加的堆栈跟踪中获取了资源,但从未释放。有关避免资源泄漏的信息,请参阅 java.io.Closeable。 java.lang.Throwable:未调用显式终止方法“关闭”
这是我的异步任务:
class displayMessages extends AsyncTask<Void, String, Void> {
@Override
protected void onPreExecute() {
}
@Override
protected Void doInBackground(Void... nothing) {
for (int i = 0; i < 100; i++) {
String currentMessage = i + " " + message;
if (true) {publishProgress(currentMessage);}
sleepT(500);
}
return null;
}
@Override
protected void onProgressUpdate(String... string) {
super.onProgressUpdate(string);
messageText.append(string[0] + "\n");
}
@Override
protected void onPostExecute(Void result) {
}
}
【问题讨论】:
-
您是否收到此版本代码的错误?检查复选框是否被选中的代码在哪里?
-
我收到此版本的错误。我最初有 checkbox.isChecked(),我现在在 if 语句中有“true”。我用“true”替换了它,看看我是否会得到同样的错误。
-
好吧,我问的原因与所选答案假设的原因相同(您正在从后台线程访问一个复选框),但我不明白那如何解决您的问题,如果您得到上面代码中删除的复选框语句的问题..
标签: java android android-asynctask