2011-04-08 133 views
-2

管理在后台工作的线程的正确方法是什么?处理线程

例如,我有创建多个线程的活动。我需要做以下几点:
1)消灭所有线程时应用程序被破坏
2)暂停活动中创建的线程,如果用户从活动
3导航离去的),如果活动被破坏

销毁活动中创建线程

我唯一想到的就是将所有线程变量声明为public,以便能够在上面列出的这些事件上发出t.destroy()或类似的东西。 首先,我不确定这是否是正确的方式,其次,我不喜欢它,因为我将不得不更改代码以确保我可以引用创建的所有线程。

例如,我有我的活动实例化新对象(例如LoadImages.class),并且对象根据要加载的图像数量创建多个线程的情况。线程在调用活动中不可见。

那么,我是否必须将线程引用传递给调用活动,或者有一些方法可以知道谁是线程的父节点,并且只销毁具有特定父Activity的线程?

回答

0

对于LoadingImages我觉得这是一个简单的解决方案:对LoadingImage的公共方法称为release,将允许它来释放自己的资源。

如果您的每项活动都在破坏自己的线程,我不认为您需要执行第1步。

+0

是的。你是对的。不需要步骤1.如何销毁线程?你是否继续参考创建的每个线程(在LoadingImage中),以便销毁或停止它们(在发布中)? – bobetko 2011-04-08 15:23:31

+1

那么,通常你应该使用'AsyncTask'并调用'task.cancel(false)'。 'Thread'没有公开一个好的停止界面。查看http://developer.android.com/reference/java/lang/Thread.html#destroy() – 2011-04-08 15:32:43

+0

使用AsyncTask看起来似乎是提供取消方法的最佳方式。我已更正我的代码并将新方法添加到加载类中,一切都很好。 – bobetko 2011-04-08 21:16:17