android之点击返回两次退出程序

本文介绍了两种Android应用退出的方法:一种是通过对话框提示再按一次退出程序;另一种是通过管理Activity集合的方式实现更佳用户体验。后者涉及创建自定义Application类来管理所有Activity的生命周期。

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

第一种方法中当退出应用后弹出应用程序崩溃的对话框,有时退出后还会再次启动,少部分的用户体验不太好。但现在也依旧还会有少部分的开发人员会使用这种方式,因为使用方式很简单

第一种方法:

public class MainActivity extends Activity {

    // 定义一个变量,来标识是否退出
    private static boolean isExit = false;

    Handler mHandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            isExit = false;
        }
    };

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

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exit();
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

    private void exit() {
        if (!isExit) {
            isExit = true;
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            // 利用handler延迟发送更改状态信息
            mHandler.sendEmptyMessageDelayed(0, 2000);
        } else {
            finish();
            System.exit(0);
        }
    }

}
为了更好用户体验一般常用第二种方法,第二种方式是吧activity放到集合中,返回退出应用程序去销毁activity来完成操作

第二种方法:

<创建一个继承Application的类>
public class myApplication extends Application {
private List<Activity> oList;//用于存放所有启动的Activity的集合

public void onCreate() {
super.onCreate();
oList = new ArrayList<Activity>();
}

/**
* 添加Activity
*/
public void addActivity_(Activity activity) {
// 判断当前集合中不存在该Activity
if (!oList.contains(activity)) {
oList.add(activity);//把当前Activity添加到集合中
}
}

/**
* 销毁单个Activity
*/
public void removeActivity_(Activity activity) {
//判断当前集合中存在该Activity
if (oList.contains(activity)) {
    oList.remove(activity);//从集合中移除
    activity.finish();//销毁当前Activity
}
}

/**
* 销毁所有的Activity
*/
public void removeALLActivity_() {
     //通过循环,把集合中的所有Activity销毁
for (Activity activity : oList) {
     activity.finish();
}
}
}

<创建BaseActivity 继承 Activity> 用于管理所有的Activity,所有的Activity都继承这个类

public class BaseActivity extends Activity {
private myApplication application;
private BaseActivity oContext;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (application == null) {
    // 得到Application对象
    application = (myApplication) getApplication();
}
oContext = this;// 把当前的上下文对象赋值给BaseActivity
addActivity();// 调用添加方法
}

// 添加Activity方法
public void addActivity() {
application.addActivity_(oContext);// 调用myApplication的添加Activity方法
}
//销毁当个Activity方法
public void removeActivity() {
application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法
}
//销毁所有Activity方法
public void removeALLActivity() {
application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法
}

/* 把Toast定义成一个方法  可以重复使用,使用时只需要传入需要提示的内容即可*/
public void show_Toast(String text) {
Toast.makeText(oContext, text, Toast.LENGTH_SHORT).show();
}
}

<MainActivity >

public class oneActivity extends BaseActivity {


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onelayout);
}
// 绑定按钮
public void button(View v) {
Intent intent = new Intent(this, MainActivity.class);//跳转到主界面
startActivity(intent);
}
}

第二种方法是参考网上的代码

连接:http://blog.youkuaiyun.com/u013804382/article/details/52788900


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值