安卓Activity的退出应用程序

本文详细介绍了Android应用中实现退出功能的几种常见方法,包括使用finish()与System.exit()的区别、通过栈管理活动退出的方式以及如何通过对话框确认退出等交互细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

退出应用程序

<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);
    }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值