Java 安卓在后台运行了一段时间后关闭了我的应用程序

Java 安卓在后台运行了一段时间后关闭了我的应用程序,java,android,background,Java,Android,Background,我有一个发送TCP消息的应用程序。我需要的消息被发送,只要应用程序是活着的。所以,我授予了电池优化的权限,并添加了所有必需的唤醒锁,即使在屏幕关闭的情况下,一切似乎都正常工作。 问题是,我注意到,每次我把手机和应用程序放在后台时,当我在几个小时(或更少)后回来时,都没有消息被发送,当我进入应用程序时,它会作为新实例加载,而不像来自后台的应用程序。我该怎么做才能让我的应用程序不被Android杀死 我猜这就是所发生的事情你需要使用前景;通过startForeground()启动的服务 该服务不会“

我有一个发送TCP消息的应用程序。我需要的消息被发送,只要应用程序是活着的。所以,我授予了电池优化的权限,并添加了所有必需的唤醒锁,即使在屏幕关闭的情况下,一切似乎都正常工作。 问题是,我注意到,每次我把手机和应用程序放在后台时,当我在几个小时(或更少)后回来时,都没有消息被发送,当我进入应用程序时,它会作为新实例加载,而不像来自后台的应用程序。我该怎么做才能让我的应用程序不被Android杀死


我猜这就是所发生的事情

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


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

是的,正如其他人提到的,您必须使用服务进行后台执行

此外,还要记住奥利奥及以上品牌的品牌

您还可以查看如何有效地管理异步任务

  • 在桌面上创建一个1px*1px的透明视图,如toast(Android操作系统会将您的优先级提升为前台进程)
  • 建议您的用户将您的应用添加到白名单中。(在某些rom中)
  • 始终将应用程序的通知放在通知栏中。(还需要服务)
  • 创建一个guard进程,当你的应用程序死亡时,向guard发送一个广播,让guard重新启动你的应用程序。当防护死亡时,向应用发送广播,让应用重新启动你们的防护

  • 小心电池消耗,不要给用户带来太多麻烦

    如果你想进行后台操作,你需要使用服务。服务做什么?再次打开我的活动@流浪者