2012-03-31 128 views
0

我在我的程序中使用Intent Service。在意向服务中,我有一个计时器任务线程,每15分钟运行一次。由于它运行在一个新的线程中,除了线程本身之外,没有办法阻止它,这在我的情况下是不可能的。所以,我希望能够将计时器对象的引用从初始活动传递给Intent Service。并且使用那个引用,我可以开始或停止时间任务吗?
如何做到这一点?我可以在android中将一个对象的引用从一个活动传递给另一个活动吗?

回答

2

在意向服务中,我有一个计时器任务线程,每15分钟运行一次。

这是一个非常糟糕的主意。

首先,它不起作用。一旦onHandleIntent()返回,IntentService就会关闭。你真的在做什么是泄漏一个线程。

其次,它需要这个Service一直保留在内存中,这是Android中的一种反模式。

请使用AlarmManager每15分钟向您的IntentService发送命令,并摆脱您的计时器任务。

而且,通过这样做,您不再需要担心在活动和服务之间传递这类对象。

+0

即使应用程序本身关闭,AlarmManager也能工作。如果应用程序本身关闭,警报管理器每15分钟将能够调用后台服务。 – Ashwin 2012-04-01 04:40:50

+0

@Ashwin:“即使应用程序本身已关闭,AlarmManager是否仍能正常工作。” - 对于大多数传统的“封闭”定义,是的。 “如果应用程序本身已关闭,警报管理器每隔15分钟将能够调用后台服务。” - 这似乎是同一个问题。 – CommonsWare 2012-04-01 10:42:36

相关问题