有没有办法标记我的Android应用程序流程"忙碌"?

时间:2016-12-11 16:50:04

标签: android kill

我在Android上有一个下载程序。

在下载过程中显示通知(正在进行,不可忽略) 它也抓住了一个唤醒锁。 我甚至要求用户为我的应用禁用Doze。

然而,来自不同供应商的省电功能似乎忽略了它并随机杀死它。

有没有办法标记我的应用流程"忙碌" 所以它在非杀戮名单中具有更高的优先级?

请注意,我未在我的应用中使用服务。 常规活动产生一个线程,并从那里处理下载。

2 个答案:

答案 0 :(得分:0)

  

请注意,我没有在我的应用中使用服务

这将是你问题的最大份额。

  

常规活动产生一个线程,并从那里处理下载。

这意味着,当您不在前台时,Android不知道您正在做任何用户会重视的事情。 Android将很乐意终止您的进程,为其他进程释放系统RAM。

使用服务,可能是IntentService(因为它已经为您提供了后台线程,并且在您的工作完成后它会自动关闭)。将您的Notification转换为服务上startForeground()的{​​{1}}。

答案 1 :(得分:0)

如果您长时间保持唤醒锁,那么最好让用户了解它,使用CommonsWare指出的前台服务。

但是,如果您的用例不保证任何前景行为,那么我建议您使用框架JobScheduler,该框架也可以与打盹和应用程序待机状态一起使用。 对于API 21之前的版本,您可以使用JobDispatcher API。

您可以阅读更多详情here