我有一个活动可能会在用户按下并完成()活动时运行线程.那时候那些线程会发生什么?除非我在onDestroy()中断它们,否则它们都会尝试完成吗?
例如,下面的代码是不安全的,因为如果活动在线程之前完成,我的视图和游标可能会被销毁?
我问的原因是我在完成尚未成功调试的活动时偶尔会崩溃,因为它们很少发生,而且从未在我处于调试模式时发生.我已经开始检查我的视图对象是否为null,然后在runOnUIThread()中对它们执行任何操作.不确定这是否是最干净的解决方案,或者根本不是问题.
new Thread()(
public void run(){
crunchOnSomethingForAwhile(mCursor);
MyActivity.this.runOnUIThread(new Runnable(){
public void run(){
mTextView.setText("thread complete");
mCursor.close();
}
}
}
).start();
Run Code Online (Sandbox Code Playgroud)
有人在另一个线程上发布了一个答案,onDestroy 将所有视图引用设置为 null,最后将 Activity 引用设置为 null。因此,我假设最好的做法是在 onDestroy 中中断所有正在运行的线程,或者至少在任何 runInUIThread 方法中捕获 NullPointerExceptions。
| 归档时间: |
|
| 查看次数: |
2131 次 |
| 最近记录: |