我在活动的Oncreate中创建了一个线程,然后在任务结束后对活动的UI进行更改。任务需要5-6秒,这就是我使用线程的原因。
以下是代码:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
final String folderSize = calculateFolderSize(); // my work
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(folderSize + " GB");
}
});
}
});
thread.start();一切正常,我启动活动,然后计算大小,然后更新textView并显示大小。平均需要6秒。
问题-当我打开活动时,线程将在OnCreate方法中启动。如果在线程完成之前按后退按钮,那么我的应用程序将在6秒内崩溃(当线程完成其工作时)。
这个问题的解决方案是什么,有没有其他的选择,或者我需要阻止线程在后面按下那个活动。
发布于 2020-10-14 05:42:11
您的runOnUiThread代码似乎是在活动被销毁后调用的。
您应该检查活动是否被破坏:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
final String folderSize = calculateFolderSize(); // my work
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isDestroyed())
textView.setText(folderSize + " GB");
}
});
}
});
thread.start();https://stackoverflow.com/questions/64346783
复制相似问题