程序在运行过程中,可能会由于某种原因而被干掉或者自己崩溃掉,为了增加可靠性,一般的做法就是在系统启动之后,自动起一个看门狗程序,来时刻看守应用程序。

由于本人对android也不是很精通 所以想到了以下办法,直接上代码

import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;import java.util.List;
import java.util.Timer;
import java.util.TimerTask;public class MainActivity extends AppCompatActivity {String m_sMonitorAppName = "app"; //要监测的App的包名//这里我起了一个线程/*********************************************************************/class MyThread  implements Runnable {public void  run(){while(true){ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo> runningTasks = manager.getRunningAppProcesses();// 获得当前最顶端的任务栈,即前台任务栈ActivityManager.RunningAppProcessInfo runningTaskInfo = runningTasks.get(0);String packageName = runningTaskInfo.processName.toString();if(!packageName.equals(m_sMonitorAppName)){PackageManager packageManager = getPackageManager();PackageInfo packageInfo = null;//在这里,该App虽然没在前台运行,也有可能在后台运行(未被结束),//为了更合理,应该先结束掉,但是注释的方法总是崩溃..........//android.os.Process.killProcess(runningTaskInfo.pid); //结束进程try {packageInfo = getPackageManager().getPackageInfo(packageName, 0);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}if(packageInfo != null){Intent intent = packageManager.getLaunchIntentForPackage(m_sMonitorAppName);startActivity(intent);//启动App}}try {Thread.sleep(3000); //延时3s} catch (InterruptedException e) {e.printStackTrace();}}}}
/*********************************************************************/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*TimerTask task= new TimerTask() {@Overridepublic void run() {}};new Timer().schedule(task,2000,3000);起初,没想用线程,想用一个定时器来看守,怎想,一直崩溃*/MyThread startThread = new MyThread();new Thread(startThread ).start(); //启动线程}
}// fest.xml文件加权限  <uses-permission android:name="android.permission.GET_TASKS"/>

上面的方法 经过初步测试 可以达到预期的作用
但是有没有漏洞还不知道 望各位指正

Android 防止App退出 或者 启动另一个App相关推荐

  1. Android项目实战(二十二):启动另一个APP or 重启本APP

    Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...

  2. Android 利用Intent启动另一个app应用时,一个崩溃的问题

    今天在做Launcher项目时,需要显示所有app,并且点击调用,在调用时,遇到一个崩溃问题.在此做一记录. 问题:在本地写的一个demo应用,里面有一个bug,点击这个demo应用,应用崩溃.在la ...

  3. Android启动流程:上电到启动第一个APP的详细流程,

        1. 安卓启动大致如下图所示: 2. BootLoader (如果想了解跟详细关于bootloader请看:安卓bootloader) 从系统的角度上来讲,Android系统的启动过程可以分为 ...

  4. Android中一个APP启动另一个APP并传递参数

    被调用(启动)的APP: 项目名字:Demo_ybs 项目包名:com.ybs.demo_ybs 被调用APP中获取调用者的传递数据: package com.ybs.demo_ybs;import ...

  5. Android在一个APP中通过包名或类名启动另一个APP

    开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通 ...

  6. 从源码解析-Android中Zygote进程是如何fork一个APP进程的

    zygote进程fork子进程 前言 强烈推荐 进程创建流程 APP启动第三方应用 startActivity startService sendBroadcast ContentResolver.q ...

  7. Android入门教程 (二) 第一个App HelloWorld

    一 .前言 作为一名程序员,开始学习一门新的语言的第一步就是让程序输出 "Hello World!".学习Android也是一样,我的教学也是从第一个 "Hello Wo ...

  8. android多App间多界面交互,一个APP如何适配多个Android终端?

    简介: 传统的多终端适配方案,是为大尺寸Pad开发一个特定的HD版本.但是目前支持Android系统的设备类型越来越丰富,不同类型的设备尺寸也越来越多样化,特定的HD版本并不能适配所有设备尺寸.App ...

  9. android实现gps测速仪,GPS测速仪,一个APP就可以搞定

    原标题:GPS测速仪,一个APP就可以搞定 平时喜欢跑步.骑行的朋友是否关注过自己在运动过程中的具体情况呢?比如平均速度是多少.运动距离是多少.空气温度是多少.海拔高度是多少.大气压强是多少.甚至我们 ...

  10. app开发周期需要多久 开发一个app要多长时间

    在移动互联网时代,手机成为主要的工具,各式各样的App快速改变着大家的生活,手机App开发自然成了市场热门需求.但是App开发技术门槛比较高,很多人并不了解细节.开发制作一款专业的手机App大概需要多 ...

最新文章

  1. FIFO的读写操作时序图
  2. 为什么美国互联网没有“运营”岗?
  3. 服务器之Windows和Linux
  4. 32位微型计算机原理...,32位微型计算机原理·接口技术及其应用
  5. java正则表达式去除重复_Java正则表达式:重复捕获组
  6. Ecshop最新版v.272本地包含漏洞Oday
  7. php如何判断是否为json数据(格式)
  8. LINUX下载编译pcre
  9. 摄像机成像原理图解析
  10. Redis学习笔记三:多机数据库的实现
  11. ubuntu 12.04 修改 grub 启动参数
  12. IP 库的 8020 法则与那些高大上的名词~
  13. 4G和3G到底有什么区别
  14. 通过Shell命令-监视一个进程或端口,挂掉后自动重启,并自定义日志
  15. 微信小程序图片懒加载(自定义组件)
  16. java获取东八区时间
  17. 2.Java Excel操作读取合并单元格
  18. 甲午海战北洋水师战败的战术分析
  19. [Python3]Python官方文档-Python Manuals
  20. zabbix php ldap支持,安装zabbix时PHP ldap Warning

热门文章

  1. Java static关键字与静态块
  2. (C/C++/Java)判断中文、字符串、数字是否为“回文”
  3. 水滴模式能否解惑10亿人口下沉市场?
  4. 恭贺除夕,没什么才艺展示,就给大家画新年四格小漫画吧 >⌒<
  5. JavaScript 和 Macromedia Flash 之间的通信示例
  6. 转:『代码』JS封装 Ajax级联下拉列表
  7. 深度学习研究生常用网站||图像处理||医学影像||使用评价||汇总
  8. 【蓝桥杯真题训练 day14】今日四道真题全解析
  9. Filebeat自定义index和fields
  10. 彷徨 | HDFS核心设计思想图