继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

一次关闭所有Activity和连续点击两次返回键关闭程序的方法

米脂
关注TA
已关注
手记 492
粉丝 88
获赞 591
最近有人问我怎么样一次关闭应用程序里所有的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);
}

原文链接:http://www.apkbus.com/blog-47151-59334.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP