自定义Activity堆栈,不同版本中程序的退出
来源:互联网 发布:mac ping ip 端口 编辑:程序博客网 时间:2024/05/16 08:29
1、首先创建一个名为ScreenManager的类。
2、编写其代码,如下所列。
package wyf.ytl.utils;
import java.util.Stack;
import android.app.Activity;
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){}
public static ScreenManager getScreenManager(){
if(instance == null){
instance = new ScreenManager();
}
return instance;
}
public void popActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
public Activity currentActivity(){
if(activityStack.size() == 0){
return null;
}
Activity activity = activityStack.lastElement();
return activity;
}
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
public void exitApp(){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
popActivity(activity);
}
}
}
}
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
public void exitApp(){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
popActivity(activity);
}
}
}
3、在每个Activity中的onCreate方法中调用自定义Activity栈中的pust方法,如下所示。
ScreenManager.getScreenManager().pushActivity(this);
4、重写所有Activity中的onKeyDown方法,拦截系统原有的返回键的处理,代码如下所示。
/**
* 拦截返回按键的方法
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:// 返回键
Utils.showExitDialog(this);
break;
}
return false;
}
5、之后在需要退出应用程序时调用自定义Activity栈的退出方法即可。
ScreenManager.getScreenManager().exitApp();
- 自定义Activity堆栈,不同版本中程序的退出
- 在自定义的控件中退出Activity
- Android中Activity出现与退出的自定义动画
- android中Activity的管理及程序的退出
- android中Activity的管理及程序的退出
- 同一个程序不同activity放入不同的栈中,不同程序的activity放入同一个栈中
- Activity堆栈管理器 以及 应用退出的两种方案
- android 在一个Activity中结束另一个Activity的方法(可以完全退出程序)
- android 在一个Activity中结束另一个Activity的方法(可以完全退出程序)
- 嵌入式开发中堆栈溢出导致程序异常退出
- Android 退出Activity退出程序
- android程序退出当前activity的方法
- android程序退出当前activity的方法
- android程序退出当前activity的方法
- android程序退出当前activity的方法
- android程序退出当前activity的方法
- 程序退出当前activity的方法
- android程序退出当前activity的方法
- SQL SERVER数据库修复经验
- 字符串中单引号的应用
- Convert 10g Single-Instance database to 10g RAC
- net 获取Excel所有工作表名称
- 《计算机命令全集》
- 自定义Activity堆栈,不同版本中程序的退出
- SQL SERVER数据库复制中出现logread代理失败的错误日志获取及分析办法
- PHP SPL详解
- linq查询简介
- android中文字跑马灯效果
- 用python 实现activex网页控件
- mysql 局域网 连接
- c#将xml字符串转化为 DataTable
- java中POI与JXL的区别