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

现在这里是我想要实现的功能:如果活动暂停(即进入后台)然后intent服务应该仍然运行,它确实如此。但是,如果我使用任务管理器杀死应用程序,intent服务应该停止,尽管现在它没有。它继续执行 onHandleIntent 直到完成。如果我手动调用 stopSelf(), onDestroy() 被称为,但 onHandleIntent 方法继续执行。我该如何强制 onHandleIntent 停下来?调用"return"不是一个选项,因为它可能会陷入一个rest方法调用中。

我应该使用intent service来实现此功能还是其他功能(如service或asynctask)?

有帮助吗?

解决方案

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

我不确定为什么"调用返回"不是你的选择?通过这个我假设你的意思是检查一个条件,并退出循环或块,如果条件满足。这通常是线程(在服务或其他地方)应该如何结束(尽管还有其他 方法).服务的线程可以侦听已发生的特定事件(例如,如果活动已被销毁,则通过在活动的 onDestroy 被调用,但如果这是你想要的,那么你可能不应该使用服务),然后 run() 能优雅地返回。

但是,如果这是一个无论用户在他的设备上做什么(在您的应用程序内部或外部)都要完成的任务,那么它应该是一个不应该从外部中断的任务。它应该继续下去,直到它完成。

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

其他提示

停止在你的 onDestroy() 方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top