应用程序被杀后保持活动的意图服务

时间:2013-10-24 10:06:01

标签: android android-intent service intentservice

我在我的应用程序中有意向服务。这项服务有一些工作要做 - 上传一些文件。只有在有事情要做时才会运行。

当满足某些条件时,服务将不会上传,例如没有Internet连接。出于这个原因,它将自己注册到广播接收器上以接收有关互联网连接变化的消息。

问题是即使服务正在做某事,服务也会被app杀死,例如:

  1. App正在发送意向服务
  2. 服务开始上传,一切都很好
  3. X%上传,app被杀,服务被杀
  4. 互联网连接已更改 - 服务已被唤醒。
  5. 如果应用程序被杀后服务被唤醒,为什么它会被应用程序杀死?当应用程序被杀时,有没有办法阻止查杀服务?

    我手动杀了app。我知道android可以随时杀死我的服务而且我不想阻止它。我只想在用户关闭或终止应用程序后运行此服务。

3 个答案:

答案 0 :(得分:1)

因为你使用了一个intentService,意味着一旦activty破坏,intentService就会销毁 所以你必须使用Service而不是intentService,这样你就可以在背景中上传你的文件了。

根据服务和活动之间通过广播接收器进行的操纵或将服务绑定到活动。

修改:

可以从任何线程触发服务。

必须从主线程触发IntentService。

答案 1 :(得分:1)

“只有在有事情要做时才会运行。”理论上只是:) - 也许这就是你想要实现的目标。

“问题是即使服务器正在做某事,服务也会被app杀死,例如:” 当然,有时用户操作将终止您的服务或意图服务。 This是一个失败的答案。

“有什么方法可以防止应用程序被杀时杀死服务?” 它只是关注Google中的“家长控制”任务保护“关键字!

答案 2 :(得分:0)

如果您不介意显示通知(在您的情况下,您可以显示上传进度通知),那么您可以在IntentService(或服务)中致电:

startForeground(int id,Notification notification)

这可以防止您的应用程序被杀时终止您的服务。

来自文档:"您可以设置此标记,如果终止您的服务会对用户造成干扰,例如您的服务正在播放背景音乐,那么用户会注意到他们的音乐是否停止播放。&# 34;