我在Android上有一个下载程序。
在下载过程中显示通知(正在进行,不可忽略) 它也抓住了一个唤醒锁。 我甚至要求用户为我的应用禁用Doze。
然而,来自不同供应商的省电功能似乎忽略了它并随机杀死它。
有没有办法标记我的应用流程"忙碌" 所以它在非杀戮名单中具有更高的优先级?
请注意,我未在我的应用中使用服务。 常规活动产生一个线程,并从那里处理下载。
答案 0 :(得分:0)
请注意,我没有在我的应用中使用服务
这将是你问题的最大份额。
常规活动产生一个线程,并从那里处理下载。
这意味着,当您不在前台时,Android不知道您正在做任何用户会重视的事情。 Android将很乐意终止您的进程,为其他进程释放系统RAM。
使用服务,可能是IntentService
(因为它已经为您提供了后台线程,并且在您的工作完成后它会自动关闭)。将您的Notification
转换为服务上startForeground()
的{{1}}。
答案 1 :(得分:0)
如果您长时间保持唤醒锁,那么最好让用户了解它,使用CommonsWare指出的前台服务。
但是,如果您的用例不保证任何前景行为,那么我建议您使用框架JobScheduler,该框架也可以与打盹和应用程序待机状态一起使用。 对于API 21之前的版本,您可以使用JobDispatcher API。
您可以阅读更多详情here。