【GT-安卓应用开发之退出APP】

前言:目前在app中主流的退出应用的方式有两种,一种是弹出提示框,另外一种则是主流的双击退出。今天整理了一下相关代码,编写一个小demo整理了几种退出方式。

  在安卓中,监听返回键有两种方式,分别是onKeyDown与onBackPress,我定义四种实现方式如下:

  方法一,onBackPress处理,双击退出

  方法二,onKeyDown双击退出

  方法三,onBackPress并调用系统提示框

  方法四,onKeyDown调用自定义弹出框

 主界面MainActivity代码如下:

public class MainActivity extends AppCompatActivity {

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

    @OnClick({R.id.btn1,R.id.btn2, R.id.btn3, R.id.btn4})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.btn1:
                startActivity(1);
                break;
            case R.id.btn2:
                startActivity(2);
                break;
            case R.id.btn3:
                startActivity(3);
                break;
            case R.id.btn4:
                startActivity(4);
                break;
        }
    }

    private void startActivity(int i) {
        switch (i){
            case 1:
                Intent intent1 = new Intent(MainActivity.this,ExitActivity1.class);
                intent1.putExtra("text","方法一");
                startActivity(intent1);
                finish();
                break;
            case  2:
                Intent intent2 = new Intent(MainActivity.this,ExitActivity2.class);
                intent2.putExtra("text","方法二");
                startActivity(intent2);
                finish();
                break;
            case 3:
                Intent intent3 = new Intent(MainActivity.this,ExitActivity3.class);
                intent3.putExtra("text","方法三");
                startActivity(intent3);
                finish();
                break;
            case 4:
                Intent intent4 = new Intent(MainActivity.this,ExitActivity4.class);
                intent4.putExtra("text","方法四");
                startActivity(intent4);
                finish();
                break;
        }
    }

}

  四种退出方式的实现逻辑代码:

  方法一

@Override
public void onBackPressed() {
    long secondTime = System.currentTimeMillis();
    if (secondTime - firstTime > 6200) {
        Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
        firstTime = secondTime;
    } else {
        System.exit(0);
    }
}

  方法二

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

  方法三

@Override
public void onBackPressed() {
    AlertDialog.Builder builder = null;
    builder = new AlertDialog.Builder(this);
    builder.setTitle("提示");
    builder.setMessage("确定退出应用?");
    builder.setCancelable(true); // 将对话框设置为可取消
    // 给按钮添加注册监听
    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // 点击按钮所调用的方法
            System.exit(0);
        }
    });
    builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // 点击按钮所调用的方法

        }
    });
    builder.show();
}

  方法四

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
        String msg = "是否确定退出应用\n否则取消";
        new NotificationDialog(this,null, msg, null,new NotificationDialog.DialogCallBack() {

            @Override
            public void onResult(boolean confirmed, Bundle bundle) {
                if(confirmed){
                    System.exit(0);
                }else{
                }
            }
        }, true).show();
    }
    return super.onKeyDown(keyCode, event);
}

PS:除了今天的主角退出APP外,代码中还涉及到了Activity之间利用Intent进行传值,传输与接送代码如下:

intent1.putExtra("text","方法一");
String text = getIntent().getStringExtra("text");
tv.setText(text);

 

  最后,项目地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值