一、结束进程
结束自己进程
Android2.2之前:
方法1.restartPackage
要加上uses-permission
方法2. 结束进程还有android.os.Process.killProcess(pid)只能终止本程序的进程,无法终止其它的
方法4. exit()
结束其他进程:
Android2.2之前:
方法1. retartPackage
方法2. killBackgroundProcesses(getPackageName()); 坏处:kill掉得Service会自动重启
另外加上权限
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
并且采用系统platform签名
因为需要用FORCE_STOP_PACKAGES权限,该权限只赋予系统签名级程序
二、启动进程
结束自己进程
Android2.2之前:
方法1.restartPackage
final ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
要加上uses-permission
<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>
Android2.2之后:
方法2. 结束进程还有android.os.Process.killProcess(pid)只能终止本程序的进程,无法终止其它的
public static final void killProcess (int pid)
方法3. finish
public void finish ()
方法4. exit()
System.exit(0)
结束其他进程:
Android2.2之前:
方法1. retartPackage
final ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(packageName);
Android2.2之后:
方法2. killBackgroundProcesses(getPackageName()); 坏处:kill掉得Service会自动重启
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
manager.killBackgroundProcesses(packageName);
//需要在xml中加入权限声明
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
方法3 .forceStopPackage 利用反射调用forceStopPackage来结束进程
Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am, yourpkgname);
需要在manifest里加上shareduid定义
android:sharedUserId="android.uid.system"
另外加上权限
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
并且采用系统platform签名
因为需要用FORCE_STOP_PACKAGES权限,该权限只赋予系统签名级程序
方法4.执行Linux命令
Process p;
int status = -1;
try {
p = Runtime.getRuntime().exec("kill -9 " + packageName);
status = p.waitFor(); //status 0 indicator successed
} catch (IOException e) {
// TODO Auto-generated catch blocke.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch blocke.printStackTrace();
}
二、启动进程
命令行启动应用程序am start -n packageName/packageName.mainActiviy
am start -n com.example.hello/com.example.hello.MainActivity