当按多任务键时,然后清除所有程序或者杀死单个程序时,如果要监听这个动作的话,可以在一个service里监听。

效果如下:

可以看到,在多任务窗口中,左滑结束进程和清除所有进程后,都会自己再打开应用,代码如下:

public class KeepLifeService extends Service {

private static final String TAG="KeepLifeService";

private String mPackName;

private ActivityManager mActivityManager;

@Override

public void onCreate() {

super.onCreate();

mActivityManager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

String process=getProcessName();

mPackName =getPackageName();

boolean isRun=isRunningProcess(mActivityManager,mPackName);

Log.i(TAG, String.format("onCreate: %s %s pid=%d uid=%d isRun=%s", mPackName,process, Process.myPid(), Process.myUid(),isRun));

if(!isRun){

Intent intent = getPackageManager().getLaunchIntentForPackage(mPackName);

if(intent!=null){

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

}

}

}

@Nullable

@Override

public IBinder onBind(Intent intent) {

return null;

}

/**

* 获取当前进程名称

*

* @return

*/

public static String getProcessName() {

try {

File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline");

BufferedReader mBufferedReader = new BufferedReader(new FileReader(file));

String processName = mBufferedReader.readLine().trim();

mBufferedReader.close();

return processName;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

/**

* 进程是否存活

* @return

*/

public static boolean isRunningProcess(ActivityManager manager,String processName) {

if(manager==null)

return false;

Listrunnings = manager.getRunningAppProcesses();

if (runnings != null) {

for (ActivityManager.RunningAppProcessInfo info : runnings) {

if(TextUtils.equals(info.processName,processName)){

return true;

}

}

}

return false;

}

}

AndroidManifest.xml 文件中

启动service

startService(new Intent(this,KeepLifeService.class));

在主进程中启动service ,然后杀死主进程,这时service会自动重新启动,onCreate 会重走,pid会不一样,所以要监听主进程被杀,只需要在service 中的oncreate 判断主进程是否存活,不存活则为被杀,这时你可以重新启动应用或者别的。(这里为了演示,选择了重新启动应用,也算是保活手段,不过这种行为不好,别当流氓软件)

关键点:

其中启动service只能用startService ,不能用bindService,

mainifest 中service 要放单独进程,或者子进程。

如果想要保活的话?

这个只适用于 在多任务 页杀死进程,如果用

am force-stop packageName

杀进程的话,是不会重启service 的。

然后是应用自己崩溃,异常,这个可以用

Thread.setDefaultUncaughtExceptionHandler

监听,然后重启应用,但是如果是 so 包,也就是c 层崩溃,是监听不到异常的,这时可以用上面那个service 开线程,每30s 检查一次主进程是否存活,然后再启动之类。

本次测试Android 版本: 5.1~7.1.1,其它的自测,有效果的话可以评论留言。

android监听程序被杀死,Android 监听主进程被杀相关推荐

  1. oracle11g监听程序启动,Oracle11g无监听程序解决办法

    Oracle11g无监听程序解决办法 一.监听器(LISTENER) 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求.既然是基于服务器端的服务,那么它 ...

  2. 链接oracle 无监听程序,连接ORACLE 无监听程序

    首先检查 计算机管理 -> 服务 ->  OracleOraDa10g_home1TNSListener  是否启动,最好重启试试. 再检查其他服务是否正常.如果没有问题还是无法连接. 在 ...

  3. android 编程一个程序实现方法,Android中一个应用实现多个图标的几种方式

    前言 最近因为新需求需要,我的应用将有多个ICON入口..最终选择了 activity-alias,其实实现多图标有好几种方式,下面就给大家总结下,分享出来供大家参考学习: 1. 多Activity ...

  4. android系统应用程序设置时间,Android应用程序设置系统时间的方法

    Android应用程序获取系统时间的方法: System.currentTimeMillis(); Android SDK虽然提供了设置系统时间的方法SystemClock.setCurrentTim ...

  5. android中应用程序生命周期,Android应用程序生命周期中的活动和图标

    面向大众的移动技术,第3部分 为您的Android移动应用程序添加导航样式 安德鲁·格洛弗 2013年7月25日发布 面向大众的移动技术 请期待本系列的后续内容. 请期待本系列的后续内容. 近年来,移 ...

  6. eclipse android 第一个程序,Eclipse 开发 Android,第一个 HelloWord 程序(学习1)-Fun言

    名词解释: SDK:Software Development Kit AVD:Android Virtual Devices ADT:Android Development Tools 1. Inst ...

  7. android 分享小程序到微信,Android 分享微信小程序之图片优化

    小菜上周接入了微信分享小程序的入口,基本功能实现都没问题,有需要的朋友可以了解一下 Android 分享微信小程序失败二三事,虽然功能都正常,但整体测试发现图片展示效果不佳.于是小菜整理了一个简单的小 ...

  8. android 清除应用程序数据,清除Android应用程序用户数据

    fantouch.. 5 该命令pm clear com.android.browser需要root权限. 所以,先跑su. 以下是示例代码: private static final String ...

  9. android开发的程序闪退,Android软件闪退

    初学Android开发,这段代码在模拟器上会闪退,不知是哪里有问题,求大神解答 package com.kongcheng.light; import androidx.appcompat.app.A ...

最新文章

  1. Linux Terminal 控制终端的使用
  2. 前端服务器共享的文件产品内容,Skype for Business Server 2015-04-前端服务器-2-创建一个文件共享...
  3. RedHat Enterprise 5.1下OpenLDAP的配置及PAMNSS的配置
  4. [ACM_NYOJ_21]三个水杯(BFS广度优先搜索)
  5. Windows 10——连接鼠标时触摸板失效解决方案
  6. python中yield的用法详解——最简单,最清晰的解释(转载)
  7. RabbitMQ六种队列模式-工作队列模式
  8. kindeditor编辑器图片上传session丢失_微信公众号排版编辑器全指南!
  9. 有没有想过,你眼中的SQL进阶,别人看来连入门都不是?
  10. 解决:mysql5.7 timestamp默认值0000-00-00 00:00:00 报错
  11. Illumina联手IBM Watson Health解读癌症基因谱
  12. opengl es3.0游戏开发学习笔记1-绘制旋转的三角形
  13. 移动云招聘,加入我们,搞点大事~
  14. spring框架特点
  15. 459-Linux基础(echo)
  16. 什么是USBHOST、USB Slave和USB OTG?它们之间有什么区别 USB、MiniUSB、MicroUSB
  17. 基因组Masked作用
  18. 计算机行为治疗模式,抑郁症的计算机化认知行为治疗(27页)-原创力文档
  19. 图森未来:营收增长与亏损扩大并行
  20. 初识flowable工作流-实现简单请假流程SpringBoot+VUE

热门文章

  1. 文本编辑格式的 又一次进化 从 txt道md
  2. javaFX 布局 控件 设置 背景 图片 java Fx 点击事件 实现跳转页面
  3. 2021年国考中国文联面试公告
  4. 特征工程——特征衍生
  5. 线下门店消费场景中的感知和互动技术浅析
  6. Chrome 将 http 域名自动跳转 https 的解决方案
  7. 我在阿里巴巴做 Serverless 云研发平台
  8. 智能车学习日记【五】——————坡道和弯接坡道
  9. Bugku-CTF:学会如来神掌应该就能打败他了吧
  10. Vue学习笔记(二十)——Vue为什么不推荐直接操作dom