Android一次性退出多个Activity的方法
程序员文章站
2024-02-22 19:27:29
本文实例讲述了android一次性退出多个activity的方法。分享给大家供大家参考,具体如下:
因为android的api中没有提供一次性退出的接口所以想要在多act...
本文实例讲述了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程序设计有所帮助。
推荐阅读
-
Android一次性退出多个Activity的方法
-
Android开发中Activity之间切换出现短暂黑屏的解决方法
-
Android 完全退出当前应用程序的四种方法
-
一个Activity中多个Fragment实现沉浸式状态栏的解决方法
-
Android实现将一个Activity设置成窗口样式的方法
-
Android实现从activity中停止Service的方法
-
Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法
-
android完全退出程序的方法 博客分类: android androidandroid2permissiongetsystemserviceactivitymanager
-
Android判断Activity是否在最上层的方法
-
Android开发中Activity之间切换出现短暂黑屏的解决方法