【发布时间】:2012-11-22 15:55:34
【问题描述】:
我正在开发一个 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 服务”有什么区别?
关于启动器应用程序如何获得比常规应用程序更高的优先级的任何其他一般建议?我认为这是一个完全合法的请求,因为对于用户而言,启动器应该被视为比大多数事情(当前前台活动除外)更高的优先级。
【问题讨论】:
-
好问题!为 dumpsys 添加 1。
标签: android out-of-memory scheduler launcher