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

时间:2015-04-19 19:04:59

标签: android multithreading

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

1 个答案:

答案 0 :(得分:2)

你永远不会破坏一个线程。这样做会使系统处于可能陷入僵局的不可知状态。线程需要自行结束,因为这是确保干净利落的唯一方式。正确的答案是这些事情之一(哪一个取决于你的程序的情况):

1)不要重新创建活动。如果这是来自配置更改(如轮换),请告诉Android不要通过清单中的onConfigChange来执行此操作。

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

3)使用Loader类型机制与LoaderManager中的内置版本或滚动您自己的版本,尝试使用相同的线程而不重新启动它。

2号很棘手,但可以保证工作。 1和3更容易,但并不总是可行。