Android一次性退出多个Activity的方法

本文实例讲述了Android一次性退出多个Activity的方法。分享给大家供大家参考,具体如下:

因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费点功夫了。我是在一个单例对象里面记录activity栈中activity的引用然后在需要退出时遍历一遍finish()掉就可以了。实现步骤如下:

1、创建一个单例对象

package com.exit; import java.lang.ref.SoftReference; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import android.app.Activity; import android.content.Context; import android.content.Intent; public class ActivityManager { private Context context; private static ActivityManager activityManager; public static ActivityManager getActivityManager(Context context) { if(activityManager == null) { activityManager = new ActivityManager(context); } return activityManager; } private ActivityManager(Context context) { this.context = context; } /** * task map,用于记录activity栈,方便退出程序(这里为了不影响系统回收activity,所以用软引用) */ private final HashMap<String, SoftReference<Activity>> taskMap = new HashMap<String, SoftReference<Activity>>(); /** * 往应用task map加入activity */ public final void putActivity(Activity atv) { taskMap.put(atv.toString(), new SoftReference<Activity>(atv)); } /** * 往应用task map加入activity */ public final void removeActivity(Activity atv) { taskMap.remove(atv.toString()); } /** * 清除应用的task栈,如果程序正常运行这会导致应用退回到桌面 */ public final void exit() { for (Iterator<Entry<String, SoftReference<Activity>>> iterator = taskMap.entrySet().iterator(); iterator.hasNext();) { SoftReference<Activity> activityReference = iterator.next().getValue(); Activity activity = activityReference.get(); if (activity != null) { activity.finish(); } } taskMap.clear(); } }

2、创建自己的根activity,重写onCreate与onDestory

package com.exit; import android.app.Activity; import android.os.Bundle; public class BaseActivity extends Activity { private ActivityManager manager = ActivityManager.getActivityManager(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); manager.putActivity(this); } @Override protected void onDestroy() { super.onDestroy(); manager.removeActivity(this); } public void exit(){ manager.exit(); } }

3、以后创建的activity都继承这个根activity就可以了,如下

package com.exit.activitys; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.exit.BaseActivity; import com.exit.R; public class ExitActivity extends BaseActivity implements OnClickListener{ private Button start; private Button exit; private TextView tipTV; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); start = (Button)findViewById(R.id.start_new_activity); exit = (Button)findViewById(R.id.exit_all_activity); tipTV = (TextView)findViewById(R.id.tip_tv); tipTV.setText("activity:"+this.toString()); start.setOnClickListener(this); exit.setOnClickListener(this); } @Override public void onClick(View v) { if(v == start){ Intent intent = new Intent(this , ExitActivity.class); startActivity(intent); }else if(v == exit){ exit(); } } }

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-09-20 05:35:06

Android一次性退出多个Activity的方法的相关文章

Android一次性退出多个Activity的方法_Android

本文实例讲述了Android一次性退出多个Activity的方法.分享给大家供大家参考,具体如下: 因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费点功夫了.我是在一个单例对象里面记录activity栈中activity的引用然后在需要退出时遍历一遍finish()掉就可以了.实现步骤如下: 1.创建一个单例对象 package com.exit; import java.lang.ref.SoftReference; import

Android 中 退出多个activity的经典方法_Android

1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Inte

Android 中 退出多个activity的经典方法

1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Inte

将Activity加入到Application中的List中的作用(退出多个activity的方法)

其实,之前接触一个项目.看到Application类里面会有一个List<Activity>,保存着每个Activity,但是不知道它什么用处.今天再看到了,问了下android方面的老手,然后大概明白了是怎么回事.然后也知道其作用了.总的来说是为了更好的解决程序的推出问题. 我呢,也不多废话,觉得还是前人的贴子写的更好.毕竟这是一个成熟的问题和具有成熟的答案的一个问题,所以我这里也就是作为记录,然后同时会恬不知耻的加上原创二字.实在不好意思,你可以理解这是一种病,虚荣也是一种病. 我先贴贴我

Android 完全退出应用程序的解决方法_Android

有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到MainActivity 设计: 有两个应用界面MainActivity和BActivity,以及用于程序的通用类ExitUtil 步骤: 1.添加一个类,名为ExitUtil 复制代码 代码如下: public class ExitUtil { public static final int EXIT_APPLICATION = 0x0001; private Context mContext; public ExitUti

Android 完全退出应用程序的解决方法

有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到MainActivity 设计: 有两个应用界面MainActivity和BActivity,以及用于程序的通用类ExitUtil 步骤: 1.添加一个类,名为ExitUtil 复制代码 代码如下:public class ExitUtil { public static final int EXIT_APPLICATION = 0x0001; private Context mContext; public ExitUtil

微信 的 android 版 个人信息的activity实现 方法

问题描述 如图所示,我希望知道ListView中的每一行是怎么实现的.因为我不知道用Adapter怎样做成如图所示这样.如昵称行,"昵称"在左,kosmo在右,而且字体不一样.还有头像行,还添加图片,更让我不明白怎么实现的了.还望各们前辈能帮帮忙. 解决方案

退出Android程序时清除所有activity的实现方法_Android

本文实例讲述了退出Android程序时清除所有activity的方法.分享给大家供大家参考,具体如下: 在一个项目中,要退出android程序,试了restartPackage. killBackgroundProcesses .通过异常并在Application的子类中重新注册Thread的 Thread.UncaughtExceptionHandler接口+异常方式,等等,都没有效果. 最后发现其实只要在从一个activity A 跳到另一个activity B 时,调用了A的finish方

退出Android程序时清除所有activity的实现方法

本文实例讲述了退出Android程序时清除所有activity的方法.分享给大家供大家参考,具体如下: 在一个项目中,要退出android程序,试了restartPackage. killBackgroundProcesses .通过异常并在Application的子类中重新注册Thread的 Thread.UncaughtExceptionHandler接口+异常方式,等等,都没有效果. 最后发现其实只要在从一个activity A 跳到另一个activity B 时,调用了A的finish方