2

我有一个用户登录屏幕。用户按下登录按钮,我创建了一个 IntentService 来连接到我的其余服务并返回身份验证结果。

现在这是我想要实现的功能:如果活动暂停(即进入后台),那么意图服务应该仍然运行,并且确实如此。但是如果我使用任务管理器来终止应用程序,意图服务应该停止,尽管现在它没有。它继续执行onHandleIntent直到完成。如果我手动调用stopSelf(),onDestroy()则调用但该onHandleIntent方法继续执行。如何强制onHandleIntent停止?调用“return”不是一种选择,因为它可能会在一个 rest 方法调用中被赶上。

我应该为这个功能使用意图服务还是其他东西(如服务或异步任务)?

4

2 回答 2

0

onDestroy()用你的方法停止它

于 2012-02-29T16:29:17.940 回答
0

首先,如果您的服务正在执行您想要在您的应用程序在前台运行时完成的事情,那么您不需要服务。您的活动或对话框可以只生成一个线程来执行您的任务,并且这些线程将在您的应用程序结束时结束,因为它们在您的应用程序的任务范围内。否则,对于您想要一直完成的任务,当用户可以在设备上做任何事情时,一定要使用服务。

我不确定为什么“回电”不是您的选择?我假设您的意思是检查条件,如果满足条件则退出循环或阻塞。这通常是线程(在服务或其他地方)应该如何结束(尽管还有其他方法)。您的服务线程可以侦听已发生的特定事件(例如,如果活动已被破坏,则通过在onDestroy调用活动时在文件或数据库中设置属性,但如果这是您想要的,那么您可能不应该使用服务),然后run()可以优雅地返回。

但是,如果无论用户在其设备上(在您的应用程序内部或外部)做什么,您都希望完成这项任务,那么它应该是一项不应被外部中断的任务。它应该一直持续到完成为止。

也许您可以更好地定义您希望何时停止此服务?

于 2012-02-29T16:32:57.740 回答