在后台运行一段时间后,Android杀死了我的应用

时间:2018-09-08 22:31:06

标签: java android background

我有一个发送TCP消息的应用程序。只要该应用程序处于活动状态,我就需要发送消息。因此,我授予了电池优化的访问权限,并添加了所有必需的wake_locks,即使屏幕关闭,一切似乎都可以正常工作。 问题是我注意到,每次我把手机留在后台运行应用程序时,几小时(或更短的时间)后回来时,都不会发送任何消息,而当我进入应用程序时,它将作为新实例加载,并且不像是来自后台的应用。如何使我的应用程序不被Android杀死?

我想这会发生

3 个答案:

答案 0 :(得分:0)

您需要使用前景Service;通过startForeground()启动的服务。

该服务不会“重新打开”您的活动;它是您的应用程序的一个组件,可能会长期存在。您可能更愿意将其视为一项没有任何观点的活动。

答案 1 :(得分:0)

是的,正如其他人提到的那样,您必须使用Service进行后台执行。

此外,请记住Background Execution Limits(适用于Oreo及更高版本)。

您还可以查看JobScheduler,以有效地管理异步任务。

答案 2 :(得分:-1)

  1. 在桌面上创建一个1px * 1px的透明视图,例如toast。(Android操作系统会将您的优先级提升为前台进程)
  2. 建议您的用户将您的应用添加到白名单中。(某些ROM)
  3. 始终将您应用的通知放在通知栏中。(也需要服务)
  4. 创建一个保护程序,当您的应用死机时,发送广播给保护,让保护重新启动您的应用。守卫死后,向应用发送广播,让应用重新启动守卫。

请注意电池消耗,不要给用户带来太多麻烦