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

最近有人问我怎么样一次关闭应用程序里所有的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/home.php?mod=space&uid=47151&do=blog&id=59334

展开阅读全文

没有更多推荐了,返回首页