Asa*_*evo 19 android android-asynctask
我已经使用AsyncTasks我的应用程序,以便懒惰下载和更新UI.
现在我AsyncTasks只是简单地更新UI:
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
gender.setText(values[0]);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何检查性别所TextView呈现的活动是否仍然可用?
如果没有,我将收到错误,我的应用程序将关闭.
Col*_*ire 25
您可以在活动的onDestroy中取消您的asynctask
@Override
protected void onDestroy() {
asynctask.cancel(true);
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
并且在执行更改时,检查您的asynctask是否已被取消(活动已销毁)
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
if(!isCancelled()) {
gender.setText(values[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个类似的问题 - 基本上我是在用户销毁片段后在异步任务中获得NPE.在研究Stack Overflow上的问题后,我采用了以下解决方案:
volatile boolean running;
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
running=true;
...
}
public void onDestroy() {
super.onDestroy();
running=false;
...
}
Run Code Online (Sandbox Code Playgroud)
然后,我在异步代码中定期检查"是否正在运行".我有压力测试这个,我现在无法"打破"我的活动.这非常有效,并且比我在SO上看到的一些解决方案更简单.
| 归档时间: |
|
| 查看次数: |
18894 次 |
| 最近记录: |