安卓Activity的退出应用程序

来源:互联网 发布:linux cp 两个文件 编辑:程序博客网 时间:2024/05/23 01:13

退出应用程序

<1>递归退出

<2>栈退出

<3>报错(解决,对话框)

主界面

<1>点击返回键,弹出退出的对话框

<2>双击两次返回键,退出


1.《递归退出》

java代码

finish()与System.exit()退出的区别:

finish()会调用onDestroy(),而System.exit()不会

 public void exit(View view){      // finish();       System.exit(0);     }


2.栈退出

在java里new一个包,再写一个java文件(MyApplication)
public class MyApplication extends Application {    private List<Activity> activities=new ArrayList<>();    public void add(Activity activity){        activities.add(activity);    }    public void exit(){        for (Activity activity : activities) {            activity.finish();        }    }}


BActivity.java代码

里面调用MyApplication中的退出程序的方法
 public void exit(View view){      // finish();       // System.exit(0);        myApplication.exit();    }


MainActivity.java里面的代码

    public void exit(View view){             myApplication.exit();    }
  @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        exit(null);    }


<1>点击返回键,弹出退出的对话框

    @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        if (keyCode==KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_UP){            long secondTime=System.currentTimeMillis();            if(secondTime-firstTime>2000){                Toast.makeText(myApplication, "再按一次退出程序", Toast.LENGTH_SHORT).show();                firstTime=secondTime;                return true;            }else{                System.exit(0);            }        }        return super.onKeyUp(keyCode, event);    }




<2>双击两次返回键,退出

 @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        //点击返回键        if (keyCode==KeyEvent.KEYCODE_BACK){            //声明弹出对象并初始化            AlertDialog.Builder builder=new AlertDialog.Builder(this);            builder.setTitle("提示:");            builder.setMessage("是否退出?");            //设置按钮           builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {               @Override               public void onClick(DialogInterface dialog, int which) {                    finish();               }           });            //设置取消按钮            builder.setPositiveButton("取消",null);            //显示弹窗            builder.show();        }        return super.onKeyDown(keyCode, event);    }