最近有人问我怎么样一次关闭应用程序里所有的Activity的方法,有人说用队列存储的方式,关闭的时候,一个一个的取出再Finish掉。其实个人认为最好的方法就是通过广播的方式来进行。这样简单易懂,方便操作,很快捷。方法如下建立一个父类
首先就是建立一个父类,让所有的activity继承父类,这样就不用每次都去注册广播,只要在父类注册好就行了,代码如下:
package net.loonggg.test; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class BaseActivity extends Activity { /** * 关闭Activity的广播,放在自定义的基类中,让其他的Activity继承这个Activity就行 */ protected BroadcastReceiver finishAppReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { finish(); } }; @Override public void onResume() { super.onResume(); // 在当前的activity中注册广播 IntentFilter filter = new IntentFilter(); filter.addAction("net.loonggg.exitapp"); this.registerReceiver(this.finishAppReceiver, filter); } @Override protected void onDestroy() { super.onDestroy(); this.unregisterReceiver(this.finishAppReceiver); } }
其次就是子类的继承,让每个Activity都去继承BaseActivity。
发送广播退出程序
/**
* 记录标记时间
*/
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
// 判断是否在两秒之内连续点击返回键,是则退出,否则不退出
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
// 将系统当前的时间赋值给exitTime
exitTime = System.currentTimeMillis();
} else {
exitApp();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
下边的这方法就是退出应用程序发送广播的方法:
/** * 退出应用程序的方法,发送退出程序的广播 */ private void exitApp() { Intent intent = new Intent(); intent.setAction("net.loonggg.exitapp"); this.sendBroadcast(intent); }
共同学习,写下你的评论
评论加载中...
作者其他优质文章