安卓按两次返回键退出程序

很多应用程序都有按两次返回键退出程序的设置,其实很简单,这里通过广播实现。
先定义一个BaseActivity,让所有的Activity都继承自这个类,在这个类里面定义一个广播接收类,收到广播后finish(),这样的话所有的Activity都会有这个接收广播的方法,收到后都会finish结束。
在onResume()方法里面注册广播,在这个类销毁时注销广播,记得销毁,不然会一直占用系统的内存。

public class BaseActivity extends Activity {
    
    
    BroadcastReceiver finishApplicationBroadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            finish();
        }
    };

    protected void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.example.gouchao");
        this.registerReceiver(finishApplicationBroadcastReceiver, filter);
    };

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        this.unregisterReceiver(finishApplicationBroadcastReceiver);
        super.onDestroy();
    }
}

在你需要按两次返回键退出程序的Activity中发送广播。

    // 连按两次退出应用
    // 记录时间
    private long exitTime = 0;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (System.currentTimeMillis() - exitTime > 2000) {
                Toast.makeText(MainActivity.this, "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                exitApp();
            }
        }
        return true;
    }
    //发送广播
    public void exitApp() {
        Intent intent = new Intent();
        intent.setAction("com.example.gouchao");
        this.sendBroadcast(intent);
    }

记得onKeyDown()方法里面要返回true,不然按一次返回键就直接返回到上一个Activity了

猜你喜欢

转载自blog.csdn.net/lizebin_bin/article/details/49824447