android关闭程序有三种方式
//第一种方式--关闭包
String service = Context.ACTIVITY_SERVICE;
ActivityManageractivityManager = (ActivityManager)IndexActivity.this.getSystemService(service);
String pagename =IndexActivity.this.getPackageName();
activityManager.restartPackage(pagename);
//第二种方式--直接杀死进程
int nPid =android.os.Process.myPid();
android.os.Process.killProcess(nPid);
//第三种方式--结束主界面
IndexActivity.this.finish();
这三种方式均能实现关闭功能,
注意:在实现效果的时候会出现,对话框闪一下,就消失,并关闭程序的样子,这是因为最后renturn的值是不一样的。
默认情况下是
return super(keycode,event);这样就会出现上述错误情形,
应该改为
return false;或return true;这样就能正常出现对话框,而不异常消失了。
完整代码如下:
@Override
public booleanonKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0) {
Log.d(Tag, "Are you sure exit application ?");
new AlertDialog.Builder(this).setTitle("中国移动").setMessage("您是要退出程序吗?")
.setIcon(R.drawable.icon).setPositiveButton("退出",new DialogInterface.OnClickListener() {
public voidonClick(DialogInterface dialog,int which) {
//第一种方式--关闭包
String service =Context.ACTIVITY_SERVICE;
ActivityManageractivityManager = (ActivityManager)IndexActivity.this.getSystemService(service);
String pagename =IndexActivity.this.getPackageName();
activityManager.restartPackage(pagename);
//第二种方式--直接杀死进程
//int nPid =android.os.Process.myPid();
//android.os.Process.killProcess(nPid);
//第三种方式--结束主界面
//IndexActivity.this.finish();
Log.i(Tag, "exit");
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public voidonClick(DialogInterface dialog,int which) {
dialog.cancel();
Log.i(Tag, "nothing");
}
}).create().show();
}
return false;
}