Android中创建杀不死的APP进程(5.0以下)
2015-06-30 10:19
337 查看
所谓的杀不死指的时进程被杀掉后,会自动重启。
即便时在设置里面强行停止后,也能够自动重启。
那么如何自动重启呢?目前想到的有3种方式:
1.使用AlarmManager来定时发intent启动
2.Native层重写对SIGKILL/SIGTERM信号的处理
3.Native层fork一个子进程,来监听APP所在的进程是否有被kill掉
对于第1种方式,java的,就不举列了。
对于第2种测试不太好用,SIGKILL不能被捕获,只是看到某些推送里面是用这种方式,有点奇怪...
对于第3中,和预期一样,即便被强制停止后也能被重启,核心就是fork一个子进程,在检测到父进程被kill后叫起.....
核心代码:
即便时在设置里面强行停止后,也能够自动重启。
那么如何自动重启呢?目前想到的有3种方式:
1.使用AlarmManager来定时发intent启动
2.Native层重写对SIGKILL/SIGTERM信号的处理
3.Native层fork一个子进程,来监听APP所在的进程是否有被kill掉
对于第1种方式,java的,就不举列了。
对于第2种测试不太好用,SIGKILL不能被捕获,只是看到某些推送里面是用这种方式,有点奇怪...
sigaction(SIGTERM, &handler, &oldHandle); sigaction(SIGKILL, &handle, &oldHandle);
对于第3中,和预期一样,即便被强制停止后也能被重启,核心就是fork一个子进程,在检测到父进程被kill后叫起.....
核心代码:
while(1==1){ int ppid_error = kill(ppid,0); if(ppid_error < 0){ system("am start --user 0 -n com.example.testndk2/com.example.testndk2.MainActivity"); exit(0); return; } sleep(2); }
相关文章推荐
- Android Java调用.so和.a、Unity C#调用jar插件和C++开发的插件
- 苹果开发 笔记(43)
- matrix-gui-browser-2.0 matrix-browser Qt QWebView hacking
- Android studio ElasticDownloadView
- App Store被拒理由大全
- 钥匙串(Keychain)服务编程指南-iOS部分
- android 适配器的使用
- iOS 得到系统的IP地址
- 完整的Android源码截屏事件的捕获--5.0
- android 中 EditText加入图标 更改边框颜色 设置透明
- iOS 隐藏App图标
- android 自定义适配器BaseAdapter
- Android Drawable
- 微信支付详解
- Android下拉列表Spinner
- 微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误
- iOS 二维码ZBarSDK类似微信的扫一扫
- Android开发中Fragment的使用
- PHP后台1:客户端(IOS/Android)GET请求PHP后台
- android 真机调试步骤