首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JobIntentService绑定到活动

将JobIntentService绑定到活动
EN

Stack Overflow用户
提问于 2018-07-25 05:53:13
回答 2查看 1.8K关注 0票数 2

我想在Android中运行一个长时间运行的操作。假设任务将运行大约5-10分钟。出于这个原因,我计划使用JobIntentService并将其绑定到Activity

现在我正在使用AsyncTask,尽管我知道AsyncTask不能/不应该用于长时间运行的操作,因此我计划现在就改变它。很多时候,当任务运行时,用户会最小化应用程序,一段时间后,安卓操作系统会关闭/清除Activity,以释放一些内存。

因此,我的AsyncTask在没有任何目的的情况下继续运行,并且在尝试更新Activity中的视图时崩溃。

因此,我计划使用JobIntentService。但是,使用JobIntentService并将其绑定到Activity会减少安卓操作系统关闭/清除Activity的机会吗?或者它仍然会遵循同样的过程?

任何人的帮助都会非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-26 16:01:00

如果你的Activity在后台,那么阻止安卓杀死你的Activity对我来说听起来不是一个好主意(甚至是必要的)。因为你的Activity在后台,所以它对用户是不可见的,所以在这段时间内不需要更新UI。

相反,您可以执行以下操作:

如果Activity在前台,那么它可以通过BroadcastReceiver从您的JobIntentService接收更新,您可以在LocalBroadcastManager中向onResume/onPause注册/注销这些更新。

如果在你的Activity被杀死时JobIntentService已经完成了它的工作,或者在后台,你可以将结果保存在某个地方(例如,在SharedPreferences中),然后在onResume of your Activity中,你可以从SharedPreferences中读取结果。

票数 3
EN

Stack Overflow用户

发布于 2019-03-25 18:18:17

不,如果你在"OnResume“生命周期方法中绑定服务并管理绑定(通过ServiceConnection),然后在"OnPause”生命周期方法上解除服务绑定,就不会发生这种情况。(从来没有尝试过,但我认为这会起作用。此外,如果在JobIntentService中重写了OnBind方法的返回,则需要通过启动新的线程从"onHandleWork“调用"onBind”)。

(如果您需要一些代码示例,请告诉我,我将在有时间时编辑此答案(:)

祝你编码愉快。再见

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51508046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档