目前手上有一套 AOSP 代码,另外还有一个纯后台形式不需要 UI 的 Android App。希望实现以下功能: 1.开机即可把 app 里面的 service 拉起来。 2.service 异常崩溃后,能被自动重启。
关于 1:目前已知可以通过监听 android.intent.action.BOOT_COMPLETED 广播实现自启动,但是前提是用户必须先运行过 app 才能生效。另外 init.rc 可以拉 linux 的 service,但是 LZ 还不清楚是否能拉 app 里的 serivce。
1
linhua 2017-06-19 16:13:03 +08:00 1
用 前台服务( foreground service )
1. 监听开机广播,安装了 app 就行吧,不需要运行过 app 2. onStartCommand 方法 返回 START_STICKY onStartCommand 有三种返回值: START_STICKY:sticky 的意思是“粘性的”。使用这个返回值时,我们启动的服务跟应用程序"粘"在一起,如果在执行完 onStartCommand 后,服务被异常 kill 掉,系统会自动重启该服务。当再次启动服务时,传入的第一个参数将为 null; |
3
satanandroid 2017-06-19 16:21:03 +08:00 1
手头有一套代码?意思是系统能改吧?
能的话直接把 app 搞成系统服务............开机重启,死了都会重启 manifest 里面 加个 android:persistent="true" android:sharedUserId="android.uid.system"这句忘记要不要 再用系统签名装上去. 超级无赖 app 完成~ |
4
paparika OP @satanandroid 感谢,打算用这个办法实现下
|
5
winglight2016 2017-06-19 19:36:23 +08:00
你搜一下“看门狗”,好像专门就是做这个的
|