永发信息网

如何让自己的Android程序,Service永不被系统kill

答案:3  悬赏:30  手机版
解决时间 2021-01-22 04:18
如何让自己的Android程序,Service永不被系统kill
最佳答案
简单地说,就是将自己写的Service变成Core Service,即将自己写的程序提升为系统级别的程序,这样在任何情况下它都不会被kill掉。
要想自己写的Service提升为Core Service,应用程序需要设置两个标志:FLAG_PERSISTENT和FLAG_SYSTEM。

具体做法如下:
1. 设置FLAG_PERSISTENT:在AndroidManifest.xml文件中,加入android:persistent="true" ;

2. 设置FLAG_SYSTEM:将你写的应用程序放到/system/app/目录下即可。具体操作如下:
A. 连接adb,然后执行如下两条命令:
adb remount
adb push your.apk /system/app/
命令adb remount是为了获取系统目录的临时操作权限,然后使用push命令将自己写的程序包上传到系统应用程序目录中。

B. 重启手机。开机后,在应用列表中就可以看到你写的程序了。
需要说明的是:系统程序不能像非系统程序那样使用adb install your.apk来安装apk包,我们只需要将apk包拷贝到/system/app/目录下重启即可。如果使用adb install的方式,那么FLAG_SYSTEM标志不会被设置,FLAG_PERSISTENT标志也将不起任何作用。

C. 如果需要卸载自己写的系统应用程序,可执行如下命令:
adb remount
adb shell rm /system/app/yourpackage.apk
全部回答
我是正品
永不被kill是不可能的,android系统应用都有可能会被kill,不要说用户应用了,只能说被kill以后还能重新启动。
Android中,当Service被kill后,如果重启需要使用BroadcastReceiver来实现,即广播接收者,例如利用BroadcastReceiver注册网络广播或者开关机广播,当接收到广播后直接启动service,这样就可以保证service被kill后,自动启动。
实现代码:
1.在配置文件AndroidManifest.xml中向系统注册BroadcastReceiver




2.需要添加相应权限

3.在Receiver中就可以添加开机,或者网络状态改变后需要进行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
4.执行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 这样即可开机,或者网络状态改变后启动Service了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有什么可以提升注意力的钢琴曲轻音乐之类的
21.5寸mac 2tb fusion drive和256ssd哪个好
路虎揽胜运动版的全地形反馈功能如何使用?
近ごろ この顷。请问它们二个意思都差不多,
大梁家村地址在哪,我要去那里办事,
最古老的东西什么
烧他全家 打他妈妈 这句话是哪的?
历史上明孝宗皇后的名字
略阳县白雀寺派出所地址在什么地方,想过去办
贵港驾驶员在玉林超速10%以下怎样办理处理?
拼博是为明天而精彩的意思是什么
拍全身照用什么镜头
麻花钻钻钢板时快速好还是慢速好呢
男友33我29一礼拜做几次
65535是什么意思
推荐资讯
广州市到佛山职业技术学院怎么走
单位换算3mg/cm³=_______kg/m&#
闸门的闸门分类
QQ炫舞飞行动作道具怎么得 怎么用
很早以前玩过的 游戏 光碟 插电视机上 单机回
罗小伊的个人资料 罗小伊是南笙姑娘吗? 罗小
兴民招待所地址在什么地方,我要处理点事!
光美世界灯具城地址在什么地方,我要处理点事
澳洁洗衣生活馆(东风街与清平路交叉口南路西)
宝贝计划地址好找么,我有些事要过去,
单选题有关电磁波的描述中,正确的是A.电磁波
二类桩需要处理吗,二类桩需要处理吗知识
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?