关于android 多个Activity应用程序按返回键退出程序问题
2011-04-15 10:30
447 查看
关于android 多个Activity应用程序按返回键退出程序问题
近期正在学习Android,为产品写个工厂测试软件,遇到比较棘手的问题,就是关于有多个Activity的android应用程序按返回键退出的问题,在网络上搜索了很多文章,有如下四种方法:1. Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()) //获取PID
System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出
2. 任务管理器方法
首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上
3. 根据Activity的声明周期
3. 我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口
Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出。
4.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。代码如下:
public class ScreenManager {
private static Stack activityStack;
private static ScreenManager instance;
private ScreenManager(){
}
public static ScreenManager getScreenManager(){
instance=new ScreenManager();
}
return instance;
}
//退出栈顶Activity
public void popActivity(Activity activity){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
//获得当前栈顶Activity
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
//将当前Activity推入栈中
public void pushActivity(Activity activity){
activityStack=new Stack();
}
activityStack.add(activity);
}
//退出栈中所有Activity
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity=currentActivity();
break;
}
break;
}
popActivity(activity);
}
}
}
这四种方法前三种本人有测试过,只能退出前一个Activity,即:A->B,在B中退出可行,在多于2个Activity的应用程序不能完全退出,第四种方法比较复杂,我未测试,本人根据这几种方法,想到如下方法可退出多个Activity应用程序,即:在每一个进入新的Activity之前finish();例如:
mIntent =new Intent(MainActivity.this,TestSd.class); //mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); startActivity(mIntent);
以上仅供参考,如各位大侠有更好的妙招,望与之讨论!
相关文章推荐
- 关于android 多个Activity应用程序按返回键退出程序问题
- android返回键退出整个程序 启动页切换activity 白屏问题
- 关于Android点击物理返回键退出程序的问题
- 关于程序退出无法关闭所有界面问题 通过广播使Android程序完全退出
- 关于android程序完全退出的问题
- 如何在android应用程序中启动其他apk程序,被启动程序退出后返回之前的程序?
- [置顶] 【Android】双击返回键,退出android应用程序 双击两次退出程序提示功能 三种实现方法
- 关于Android退出程序的问题(在主页面或任意页面退出App)
- Android实用方法—Tab导航的Activity按两次返回退出程序
- Android完全退出程序,不是返回到上一个Activity
- 【Android】双击返回键,退出android应用程序 双击两次退出程序提示功能 三种实现方法
- 关于Android程序退出后内存释放的问题
- Android 应用程序多Activity跳转之后退出整个程序
- 关于Android开发中使用System.exit(0)的问题(如写返回键响应时用到双击退出函数的时候)
- Android如何实现程序按下两次返回键退出应用程序?
- ArcGIS for Android 1.1 MapView 的Activity退出时整个程序崩溃问题
- [C#]关于调用Office应用程序后,程序不退出的问题
- 关于android应用程序使用ActivityManager退出的问题
- 关于Android程序退出后内存释放的问题
- 问题解决:在非主Activity中无法退出应用程序,只能返回上一个Activity