繁体   English   中英

在Android中重新创建活动时如何销毁旧线程?

[英]How to destroy old thread when the activity recreated in android?

我正在使用线程创建应用程序。创建活动的线程将启动,但是当我重新创建活动时,新线程正在运行,旧线程也正在运行。 所以我想破坏旧线程。

您永远不会破坏线程。 这样做会使系统处于无法知悉的状态,并且可能会陷入僵局。 线程需要自己结束,因为这是可以确保干净完成的唯一方法。 正确的答案是这些事情之一(取决于您的程序的情况):

1)不要重新创建活动。 如果这是由于配置更改(例如旋转)引起的,请告诉Android不要通过清单中的onConfigChange来执行此操作。

2)在onDestroy中,在线程对象上设置一个标志。 让线程定期检查标志并自行结束。 这样就可以干净地完成它。 在这种情况下,您需要对线程进行防御性编码,以免做任何有害的事情,您必须或多或少地假设2个实例可以运行。 如果线程确实是AsyncTask,则需要在访问onPostExecute中的UI组件之前检查其Activity是否有效。

3)将Loader类型机制与LoaderManager中的版本一起使用,或者将自己的版本滚动使用,尝试使用同一线程而不重启它。

2号比较棘手,但可以保证正常工作。 1和3比较容易,但并非总是可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM