有没有办法将我的安卓应用程序进程标记为"busy"?



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

它在下载过程中显示了通知(过程中,不可解除)而且它也抓住了wakelock。我什至要求用户禁用我的应用程序。

但是,各种供应商的节省电池功能似乎忽略了它并随机杀死它。

是否有一种方法可以标记我的应用程序"忙",因此,它在不杀害列表中具有更高的优先级?

请注意,我没有在应用中使用服务。定期活动会产生线程,并从那里处理下载。

请注意,我不在应用中使用服务

那将是您问题的狮子。

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

这意味着当您不在前景时,Android不知道您正在执行用户会重视的任何事情。Android将愉快地终止您的流程以释放其他流程的系统RAM。

使用服务,也许是IntentService(因为它已经为您提供了一个背景线程,并且一旦您的工作完成,它就会自动关闭)。将您的Notification转换为服务上的startForeground()

如果您将Wakelock持续很长时间,那么最好让用户知道它,请使用Consonsware指出的前景服务。

但是,如果您的用例不保证任何前景行为,那么我建议您使用框架乔布斯(framework)的工作,与Doze和App Standby一起玩得很好。对于早于API 21,您可以使用JobDisPatcher API。

您可以在此处阅读更多详细信息。

最新更新