Android使用单例模式实现退出应用程序
来源:互联网 发布:mindjet mac 编辑:程序博客网 时间:2024/04/29 04:45
单例:对象只创建一个实例,并且提供一个全局的访问点。
思路:创建一个继承Activity的BaseActivity,其目的是所有启动的Activity都继承该BaseActivity,我们就可以通过BaseActivity向Activity栈里添加Activity,要退出整个应用,我们遍历整个Activity栈逐个退出即可。
public class ActivityCollector { private static Stack<Activity> stackActivities; private static ActivityCollector instance; private ActivityCollector() { } /** * 单一实例 */ public static ActivityCollector getActivityCollector() { if (instance == null) { instance = new ActivityCollector(); } return instance; } /** * 添加activity到堆栈 * * @param activity */ public void addActivity(Activity activity) { if (stackActivities == null) { stackActivities = new Stack<Activity>(); } stackActivities.add(activity); } /** * 结束当前Activity(最后一个压入的即是当前activity) * * @param activity */ public void finishCurrentActivity() { Activity activity = stackActivities.lastElement(); finishAssignActivity(activity); } /** * 结束指定的Activity */ public void finishAssignActivity(Activity activity) { if (activity != null) { stackActivities.remove(activity); activity.finish(); activity = null; } } /** * 结束所有的activity */ public void finishAllActivity() { for (int i = 0, size = stackActivities.size(); i < size; i++) { if (null != stackActivities.get(i)) { stackActivities.get(i).finish(); } } stackActivities.clear(); } /** * 获取当前Activity(堆栈中最后一个压入的) */ public Activity getCurrentActivity() { Activity activity = stackActivities.lastElement(); return activity; } /** * 结束指定类名的Activity */ public void finishActivity(Class<?> cls) { for (Activity activity : stackActivities) { if (activity.getClass().equals(cls)) { finishAssignActivity(activity); } } } /** * 退出应用程序 */ public void AppExit(Context context) { try { finishAllActivity(); ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityManager.restartPackage(context.getPackageName()); System.exit(0); } catch (Exception e) { // TODO: handle exception } }}
每个启动的Activity都会执行BaseActivity的添加Activity栈的方法:
public class BaseActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 把当前activity加入到栈中 ActivityCollector.getActivityCollector().addActivity(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub }}
0 0
- Android使用单例模式实现退出应用程序
- 利用单例模式,实现Android应用程序的【再按一次退出】
- Android学习-使用单例模式实现一键退出APP
- Android学习-使用单例模式实现一键退出APP
- 单例模式实现android的退出功能
- Android 系列:单例模式实现一键退出APP
- 如何完全退出单例模式下的android应用程序,非常好用
- 如何完全退出单例模式下的android应用程序,非常好用
- android 应用程序退出代码实现
- Android 实现双击退出应用程序
- Android设计模式 单例模式(使用容器实现单例模式)
- Android退出程序(一)——单例模式
- Android应用正确的退出方式(单例模式)
- Android学习-使用单例模式实现一键…
- Android 完全退出应用程序实现代码
- android 完全退出应用程序实现代码
- Android应用程序双击退出功能实现
- Android中实现一键退出应用程序
- Latex 学习笔记--table 和 algorithm的写法
- 支付宝在ios应用上的开发[转]
- 解题基础知识
- 测试-使用SQL Lorader导入lob类型数据
- Android---45---使用AIDL Service传递复杂数据
- Android使用单例模式实现退出应用程序
- 怀念那些年我们每天使用的经典DOS程序
- ptrace函数详解
- Caused by: java.lang.ClassNotFoundException: Didn't find class "com.***.client.v1.Mai
- C#实现全窗体范围拖动
- C#之执行SQL语句:Command对象
- usb通讯2
- freemarker自定义标签
- TCP通信中,BufferedWriter和PrintWriter用来实现输出流的实现方式与区别