永发信息网

android 怎样让应用不被关闭

答案:1  悬赏:30  手机版
解决时间 2021-03-03 05:14
android 怎样让应用不被关闭
最佳答案
方法:
对于一个service,可以首先把它设为在前台运行:
public void MyService.onCreate() {
super.onCreate();
Notification notification = new Notification(android.R.drawable.my_service_icon,
"my_service_name",
System.currentTimeMillis());
PendingIntent p_intent = PendingIntent.getActivity(this, 0,
new Intent(this, MyMainActivity.class), 0);
notification.setLatestEventInfo(this, "MyServiceNotification, "MyServiceNotification is Running!" p_intent);
Log.d(TAG, String.format("notification = %s", notification));
startForeground(0x1982, notification); // notification ID: 0x1982, you can name it as you will.
}

重要设置-------------------------------
相较于/data/app下的应用,放在/system/app下的应用享受更多的特权,比如若在其Manifest.xml文件中设置persistent属性为true,则可使其免受out-of-memory killer的影响。如应用程序'Phone'的AndroidManifest.xml文件:
<application android:name="PhoneApp"
android:persistent="true"
android:label="@string/dialerIconLabel"
android:icon="@drawable/ic_launcher_phone">
...
</application>
设置后app提升为系统核心级别,任何情况下不会被kill掉, settings->applications里面也会屏蔽掉stop操作。

这样设置前的log: Proc #19: adj=svc /B 4067b028 255:com.xxx.xxx/10001 (started-services)
# cat /proc/255/oom_adj

设置后的log: PERS #19: adj=core /F 406291f0 155:com.xxx.xxx/10001 (fixed)
# cat /proc/155/oom_adj
-12 # 这是CORE_SERVER_ADJ
注:init进程的oom_adj为-16(即SYSTEM_ADJ): cat /proc/1/oom_adj

Android相关部分分析:
在文件frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中有以下的代码:
final ProcessRecord addAppLocked(ApplicationInfo info) {
ProcessRecord app = getProcessRecordLocked(info.processName, info.uid);

if (app == null) {
app = newProcessRecordLocked(null, info, null);
mProcessNames.put(info.processName, info.uid, app);
updateLruProcessLocked(app, true, true);
}

if ((info.flags&(ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT))
== (ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT)) {
app.persistent = true;
app.maxAdj = CORE_SERVER_ADJ; // 这个常数值为-12。
}
if (app.thread == null && mPersistentStartingProcesses.indexOf(app) < 0) {
mPersistentStartingPr
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
空腹查OTGG及血糖 两小时之前查的都是正常值
李白后期为什么要卖攻速打野刀,卖了不是没
方圆石膏天花怎么去啊,有知道地址的么
85版本dnf28级能干什么 没疲劳了
高考体育分是什么?指五项吗?五项总分在平均
听说华人全球影业集团签约落户在了长沙华侨假
九江市金日机电工具公司这个地址在什么地方,
我因涉嫌盗窃 没有事实被刑事拘留一个月后无
湘蜜园土特产这个地址在什么地方,我要处理点
保润集团(永州分公司)我想知道这个在什么地方
镜子后面的银粉在什么条件下会掉
我是男生一个女孩和我开玩笑说我怀了她的孩子
新郑市郑州信阳食府我想知道这个在什么地方
苹果六换排线东西会不会丢失
想知道考沈阳理工大学艺术设计 多少分
推荐资讯
求解,怎么获得@responsebody后的 response响
谁知道瑞安那里黄金鉴定
单选题13×70=A.120B.910C.190D.510
淘宝过了48小时没发货还可以申请退款吗
小飞马童装地址在什么地方,想过去办事
与禅让制有关的部落联盟首联有 ①黄帝?? ②尧
有首歌词是这样的:昨日偶然在街头遇见她,我
喀什东路/喀什东路立交桥(路口)在什么地方啊
歌词的最后一句是,被感动过,一个女歌手唱的
如何申请CMA高分荣誉证书
地下城与勇士西部无法者光剑怎么样
如何解决pmma灯罩合模线的问题
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?