杀死进程

杀死进程

可以kill别人,但是不能kill自己

主要通过进程管理者  activityManager

权限:<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <EditText 
        android:hint="请输入要杀死的进程包名"
         android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et_packname"
        />

   <Button
       android:onClick="click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="杀死进程" />

</RelativeLayout>



package com.itheima.killother;

import android.app.Activity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

//可以kill其他进程,但是不能kill自己
//手机重要进程是受保护的,是不能kill的,例如电话进程
public class MainActivity extends Activity {
	private ActivityManager am;//相当于进程管理器
	private EditText et_packname;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取系统服务   activity管理者
		am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
		et_packname = (EditText) findViewById(R.id.et_packname);
	}

	public void click(View view){
		String packname = et_packname.getText().toString().trim();
		//杀死空进程 和 后台进程,服务进程和前台进程就kill不掉
		//接受参数是包名
		//需要添加对应的权限
		am.killBackgroundProcesses(packname);
	}

}


kill自身进程,应该不需要权限设置

package com.itheima.exit;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public void onBackPressed() {
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("提醒");
		builder.setMessage("确定退出当前应用程序吗?");
		builder.setPositiveButton("立刻退出", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				finish();//关闭当前的activity。
				//把自己的进程杀死。
				//自杀的方法,只能kill自己的进程,不能对其他进程进行操作
				//只能传自己进程的id,传其他进程的id是无效的
				android.os.Process.killProcess(android.os.Process.myPid());
				//直接把虚拟机退出,这样也可以退出进程,但是虚拟机就挂掉了,这样很暴力,很不好
				//System.exit(0);
			}
		});
		builder.setNegativeButton("取消", null);
		builder.show();
	}
}





你可能感兴趣的:(杀死进程)