gpt4 book ai didi

android - 销毁 Activity 的线程和 View 时会发生什么情况?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:41 26 4
gpt4 key购买 nike

我有一个 Activity ,当用户按下并完成该 Activity 时,线程可能会运行。那时那些线程会发生什么?除非我在 onDestroy() 中打断它们,否则它们都会尝试完成吗?

例如,下面的代码是否不安全,因为如果 Activity 在线程之前完成,我的 View 和光标可能会被破坏?

我问的原因是,在完成尚未成功调试的 Activity 时,我偶尔会发生崩溃,因为当我处于 Debug模式时,它们很少发生,也从不发生。从那以后,我开始检查我的 View 对象是否为空,然后再在 runOnUIThread() 中对它们进行任何操作。不确定这是否是最干净的解决方案,或者这是否就是问题所在。

new Thread()(
public void run(){
crunchOnSomethingForAwhile(mCursor);
MyActivity.this.runOnUIThread(new Runnable(){
public void run(){
mTextView.setText("thread complete");
mCursor.close();
}
}
}
).start();

最佳答案

我会考虑使用 AsyncTask而不是简单的 Thread。它有一些内置支持,可以在另一个线程中完成工作,然后在 UI 线程上完成一些工作。

就是说,有许多线程在讨论 Activity 结束时如何处理 AsyncTask。你究竟应该做什么取决于任务在做什么。如果它只适用于那个Activity,那么你可以在onPause中取消任务(假设它不仅仅是轮换变化)。

否则,有多种策略可以跨 Activity 保留 AsyncTasks。看这个question一些想法。这commonsware blog还有一个在屏幕旋转时保持 AsyncTask 的示例。

关于android - 销毁 Activity 的线程和 View 时会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4960425/

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