我有一个用户登录屏幕。用户按下登录按钮,我创建一个IntentService来连接到我的rest服务并返回身份验证结果。
现在这是我想要实现的功能:如果活动暂停(即进入后台),那么intent服务应该仍然运行,并且它确实运行了。但是如果我使用任务管理器来终止应用程序,intent服务应该会停止,尽管现在它还没有,它会继续执行onHandleIntent
直到完成。如果我手动调用stopSelf()
,则会调用onDestroy()
,但onHandleIntent
方法会继续执行。如何强制onHandleIntent
停止?调用"return“不是一个选项,因为它可能会在一个rest方法调用中被捕获。
我应该将意图服务用于此功能还是其他功能(如服务或异步任务)?
发布于 2012-02-29 16:32:58
首先,如果你的服务正在做你想做的事情,而你的应用程序在前台运行,那么你就不需要服务。你的活动或对话框可以产生一个线程来完成你的任务,这些线程将在你的应用程序结束时结束,因为它们在你的应用程序的任务范围内。否则,对于你一直想要完成的任务,当用户可以在设备上做任何事情的时候,一定要使用服务。
我不知道为什么“调用return”不是你的选择?我假设你的意思是检查一个条件,如果条件满足,就退出循环或块。这通常是线程(在服务中或其他地方)结束的方式(尽管还有其他approaches)。您的服务的线程可以侦听已发生的特定事件(例如,如果活动已被销毁,通过在调用活动的onDestroy
时在文件或数据库中设置属性,尽管如果这是您想要的,那么您可能不应该使用服务),然后run()
可以优雅地返回。
但如果这是一个你想要完成的任务,而不管用户在他的设备上做什么(在你的应用程序内部或外部),那么它应该是一个不应该从外部中断的任务。它应该一直运行,直到它完成。
也许您可以更好地定义何时停止此服务?
发布于 2012-02-29 16:29:18
在您的onDestroy()
方法中停止它
https://stackoverflow.com/questions/9502131
复制