我正在开发一个 Android 启动器(主屏幕替换)应用程序并遇到启动器在低内存情况下被杀死。当用户回到家并且必须等待时,这显然不是很好。
在我的研究中,我发现 Android 将进程分为几个优先级组,从最高到最低:
系统
执着的
前景
可见的
可感知的
服务
家
以前的
B 服务
背景
您可以通过执行以下命令检查哪些进程: adb shell dumpsys meminfo
我能找到的关于这个主题的最全面的文档是:http: //developer.android.com/guide/components/processes-and-threads.html#Lifecycle
但是,它并没有清楚地描述上述所有组。具体来说,
一个过程如何/何时被认为是“可感知的”?一些应用程序(例如Go Launcher EX)似乎已经知道如何在不在前台时保持在此类别中。这样,它就不会经常被杀死。他们是怎么做到的?
我从 adb shell dumpsys 活动中发现 Go Launcher Ex 被视为前台服务。我能找到的关于这个主题的唯一文档说你需要在状态栏中放置一个持久通知。然而,Go Launcher Ex 以某种方式绕过了这个要求。我不知道如何:-(
“A 服务”、“家庭”和“B 服务”有什么区别?
关于启动器应用程序如何获得比常规应用程序更高的优先级的任何其他一般建议?我认为这是一个完全合法的请求,因为对于用户来说,启动器应该被认为比大多数事情(当前前台活动除外)具有更高的优先级。