5分钟打造Android一键退出功能
2016-05-16 12:28
459 查看
5分钟打造Android一键退出功能
本文原创,转载请经过本人准许。写在前面:
当我们的App打开很多Activity的时候,用户挨个返回退出显然用户体验是非常不好的,所以我们有时需要提供一个一键退出功能。一键退出功能有很多种实现方法,本文我们选择比较常规的手段,用一个BaseActivity管理所有启动的Activity。
下面给出完整的BaseActivity代码
import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.os.Bundle; public abstract class BaseActivity extends Activity { // 管理运行的所有的activity public final static List<BaseActivity> mActivities = new LinkedList<BaseActivity>(); public static BaseActivity activity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); synchronized (mActivities) { mActivities.add(this); } init(); } private void init() { initViews(); initData(); } /** * 初始化Views */ public abstract void initViews(); /** * 初始化数据 */ public void initData() { } @Override protected void onResume() { super.onResume(); activity = this; } @Override protected void onPause() { super.onPause(); activity = null; } @Override protected void onDestroy() { super.onDestroy(); synchronized (mActivities) { mActivities.remove(this); } } /** * 一键退出的方法 */ public void killAll() { // 复制了一份mActivities 集合 List<BaseActivity> copy; synchronized (mActivities) { copy = new LinkedList<BaseActivity>(mActivities); } for (BaseActivity activity : copy) { activity.finish(); } // 杀死当前的进程 android.os.Process.killProcess(android.os.Process.myPid()); } }
代码分析:
在项目中的所有的Activity,都继承于BaseActivity,在onCreate方法中,将这个Activity add进LinkedList中(这里选择用LinkedList是因为它增删快,适合于这个场景中),在onDestory方法中将这个Activity remove掉,这样就保证每一个启动了的Activity都存于集合LinkedList中。
然后我们写一个killAll方法,复制这个集合并且遍历退出,这样我们的一键退出功能就完美实现了~!
相关文章推荐
- Android Studio JNI使用之个人笔记
- android学习笔记(三)__Activity和main.xml文件
- android学习笔记(二)__系统框架
- Android仿斗鱼领取鱼丸文字验证(三)
- android学习笔记(一)__安装环境
- iOS类似Android的ViewPager
- Android最佳性能实践——布局优化技巧之<include>、<merge>标签及仅在需要时才加载布局的:ViewStub
- Android——多线程编程练习题
- Mac OSX 下 手动更新 Android Studio
- Android通用流行框架大全【整理】
- Gitlab的使用
- Android 自定义系统通知栏的颜色
- Android开发系列通信篇之EventBus
- Android开发之 混淆加固和反编译
- Android 触摸事件传递机制
- 安卓指令和命令学习总结
- Android 不开WiFi获取Mac地址 夜未央
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- android api 中文 (73)—— AdapterView
- Android studio适配6.0的一些小问题