从Android中的多个活动控制衍生的线程

时间:2013-01-17 16:23:51

标签: android multithreading object-reference

我有一个运行后台线程的应用程序,它定期执行任务。 UI线程通过几个不同的活动。

我使用的教程可以在this blog找到,其主要内容如下:

  • 创建一个扩展Thread
  • 的类

public final class JSONThread extends Thread {

  • 在此类中定义一个方法,该方法将任务添加到MessageQueue,提示在能够执行时执行。

public synchronized void enqueueJSON(final JSON.JSON task) {

但是,在我的主活动中创建初始对象后,导航到另一个活动显然会丢失绑定到我的线程的对象。我不再能够在该Object上调用方法(因此无法添加到队列中)。

我不确定这是由我自己的架构错误决定还是监督明显的解决方案造成的。有任何想法吗?请注意,我试图为此目的避免使用AsyncTask,因为一个简单任务的五个线程池似乎有点过多。

2 个答案:

答案 0 :(得分:2)

您需要将Thread对象存储为生命周期长于Activity的其他对象的成员。

两个想法:

a)它可能是Application的成员(http://developer.android.com/reference/android/app/Application.html)

如果您没有运行服务,则可能会遇到此问题。无法保证您的应用程序不会被杀死(例如,如果您的活动之上会弹出任何系统对话框)

b)它可以是服务的成员 (http://developer.android.com/reference/android/app/Service.html)

答案 1 :(得分:1)

您应该使用服务,而不是线程。只要存在与其绑定的活动,服务将保留在后台,并且当活动退出时,服务不会重置。