关闭所有Activity和连续点击两次返回键关闭程序的方法
2015-08-19 11:07
531 查看
最近有人问我怎么样一次关闭应用程序里所有的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
方法如下建立一个父类
首先就是建立一个父类,让所有的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
相关文章推荐
- windows下 IP 访问策略控制 (Windows IP安全策略控制)
- [LeetCode] Group Anagrams
- hibernate错误收集
- 嵌入式笔试
- Android:AsyncTask源码解析
- 恶补计算机基础知识 补码 进制 基本数据类型字节
- [codevs3295]落单的数
- UIButton下面添加滑动的线
- new到构造方法
- jquery ajax传递多个对象或数组到后台
- Java内部类大解析
- hiho一下 第五十九周 Performance Log
- Android SERVICE后台服务进程的守护
- centos为openJDK设置系统变量
- LeetCode: Ugly Number
- 数据结构的各种排序算法稳定性比较
- DH密钥交换算法
- CSS规则的优先级匹配
- javascript-void keyword
- XML 包含函数fn:contains(string1,string2)的用法