繁体   English   中英

我应该使用意图服务吗?

[英]Should I use intent service?

我有一个用户登录屏幕。 用户按下登录按钮,然后我创建一个IntentService以连接到我的其余服务并返回认证结果。

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

我应该使用意图服务来实现此功能或其他功能(例如服务或asynctask)吗?

在您的onDestroy()方法中停止它

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

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

但是,如果无论用户在设备上(应用程序之内或之外)在设备上进行什么操作,都希望完成此任务,那么该任务就不应被外界打断。 它应该继续直到完成。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM