时间:2021-05-20
本文实例讲述了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
关于怎么一次退出所有Activity网上有很多很多种说法,比如用杀进程的方式:android.os.Process.killProcess(android.os
本文实例讲述了codeigniter中实现一次性加载多个view的方法。分享给大家供大家参考。具体如下:functionsomecontrollerfuncti
一次遇到需要把Word2007中的排列整齐的人员名单导入Excel2007中,要求分布到同一列的多个单元格中,方便操作。这不能一次性复制粘贴,如果一次性复制粘贴
在做asp.net的Web开发的时候,我们经常会遇到一次性上传多个文件的需求。通常我们的解决方法是固定放多个上传文件框,这样的解决办法显然是不合理的,因为一次上
createDocumentFragment如果要在一个节点上一次性插入多个元素怎么办,比如说一次插入10000个节点?最简单粗暴的方式就是:varparent