我有一个发送TCP消息的应用程序。只要该应用程序处于活动状态,我就需要发送消息。因此,我授予了电池优化的访问权限,并添加了所有必需的wake_locks,即使屏幕关闭,一切似乎都可以正常工作。 问题是我注意到,每次我把手机留在后台运行应用程序时,几小时(或更短的时间)后回来时,都不会发送任何消息,而当我进入应用程序时,它将作为新实例加载,并且不像是来自后台的应用。如何使我的应用程序不被Android杀死?
我想这会发生
答案 0 :(得分:0)
您需要使用前景Service;通过startForeground()
启动的服务。
该服务不会“重新打开”您的活动;它是您的应用程序的一个组件,可能会长期存在。您可能更愿意将其视为一项没有任何观点的活动。
答案 1 :(得分:0)
是的,正如其他人提到的那样,您必须使用Service进行后台执行。
此外,请记住Background Execution Limits(适用于Oreo及更高版本)。
您还可以查看JobScheduler,以有效地管理异步任务。
答案 2 :(得分:-1)
请注意电池消耗,不要给用户带来太多麻烦