0

我有一个运行后台线程的应用程序,该线程定期执行任务。UI 线程在几个不同的活动中移动。

我使用的教程可以在这个博客上找到,它的要点如下:

  • 创建一个扩展 Thread 的类

public final class JSONThread extends Thread {

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

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

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

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

4

2 回答 2

2

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

给你两个想法:

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

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

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

于 2013-01-17T16:40:52.413 回答
1

您应该使用服务,而不是线程。只要有一个活动绑定到它上面,一个服务就会一直在后台运行,并且当一个活动退出时它不会被重置。

于 2013-01-17T16:40:39.843 回答