android在学习——程序的退出

我们做的android程序一般不会只有一个界面的,不同的界面往往就会有好多的activity,如何退出android程序呢?退出当前的activity吗?它又会产生其他的界面,没有达到真正的退出。要退出就要退出所有的activity否则就要先清除所有的activity记录,再退出当前activity。

我选择了后者,因为如果要退出所有的activity必定比较麻烦,需要循环等等。经过网上的资料,后者则需要一句intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  就能清除activity的记录,然后跳转到另一个界面在onresum的时候判断一下,就能关闭了。

好了废话不多说了,看代码。

 //提示是否退出
public void isExit(){
AlertDialog.Builder alertbBuilder = new AlertDialog.Builder(this);
alertbBuilder.setIcon(R.drawable.infoicon).setTitle("提示...").setMessage("你确定要离开客户端吗?");
alertbBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.putExtra("exit", "exit");//添加参数,这是退出的依据
intent.setClass(MenuActivity.this, loginActivity.class);//跳转到login界面,根据参数退出
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置,clear所有Activity记录
startActivity(intent);
}
});
alertbBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create();
alertbBuilder.show();
}

下面看看loginActivity中的相应代码:

@Override
protected void onResume() {
super.onResume();
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle.getString("login")!=null&&!bundle.getString("login").equals("login")){//已经登陆过了
Intent intent2= new Intent();
intent2.setClass(loginActivity.this, MainActivity.class);
startActivity(intent2);
}else if(bundle.getString("exit")!=null&&bundle.getString("exit").equals("exit")){//需要退出
int nPid = android.os.Process.myPid();//获取当前的id
android.os.Process.killProcess(nPid);//结束activity
}else{
}
}



原文地址:https://www.cnblogs.com/winxiang/p/2369571.html