退出窗口[置顶] 退出Activity的方法
2013-05-13 23:59
267 查看
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下退出窗口
1..停止全体Activity的方法
ActivityManager activityMgr = (ActivityManager) OneActivity.this.getSystemService(ACTIVITY_SERVICE);
activityMgr.restartPackage(getPackageName());
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2. android.os.Process.killProcess(android.os.Process.myPid())//获得PID
3. 任务管理器方法
首先要说明该方法运行在Android 1.5 APILevel为3以上才可以,同时需要权限
ActivityManager am= (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系统会将,该包下的 ,全体进程,服务,全体杀掉,就能够杀干净了,要注意加上
4. 根据Activity的声明周期,我们知道Android的窗口类提供了历史栈,我们可以通过stack的道理来奇妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的全体Activity。
在A窗口中使用上面的代码调用B窗口
Intent intent = newIntent();
intent.setClass(Android123.this,CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//注意本行的FLAG设置
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法便可全体退出。
5.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理全体Activity。并提供退出全体Activity的方法。代码如下:
public classScreenManager {
private staticStack activityStack;
private staticScreenManager instance;
privateScreenManager(){
}
public staticScreenManager getScreenManager(){
instance=newScreenManager();
}
return instance;
}
//退出栈顶Activity
public voidpopActivity(Activity activity){
activity.finish();
activityStack.remove(activity);
每日一道理
记不清有多少个夜晚,在我翻阅纸张的指间滑落;记不清有多少支蜡烛,在我的凝视中化为灰烬。逝者如斯,我时时刻刻会听见自己对生命承诺的余音,感到岁月的流转在渐渐稀释我的年少无知,我愿自己是一只上足了发条的时钟,在昼夜不停的流转中留下自己充实的每一刻。
activity=null;
}
}
//获得以后栈顶Activity
public ActivitycurrentActivity(){
Activityactivity=activityStack.lastElement();
return activity;
}
//将以后Activity推入栈中
public voidpushActivity(Activity activity){
activityStack=newStack();
}
activityStack.add(activity);
}
//退出栈中全体Activity
public voidpopAllActivityExceptOne(Class cls){
while(true){
Activityactivity=currentActivity();
break;
}
break;
}
popActivity(activity);
}
}
}
2.android开辟时,finish()跟System.exit(0)的区别
这两天在弄android,遇到一个问题:所开辟的小游戏中有背景音乐,玩的过程当中始终有音乐在放着,然后在我退出游戏后,音乐还在播放!
我看了一下我最开始写的退出游戏的代码,就是简略的finish()语句。我想应该是这个地方出了问题。后来想了想,以前似乎见过有用System.exit(0)退出游戏的,然后就尝试了一下,发现问题果然处理了。
当初来完全弄清楚两者的区别。
首先一个Activity是有生命周期的,onCreate,onStart,onResume,onPause,onStop,onDestroy...
finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有当即释放内存,活动的资源并没有被清理;当调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。
其实android的机制决定了用户没法完整退出应用,当你的application最长时间没有被用过的时候,android自身会决定将application关闭了。
文章结束给大家分享下程序员的一些笑话语录:
爱情观
爱情就是死循环,一旦执行就陷进去了。
爱上一个人,就是内存泄露--你永远释放不了。
真正爱上一个人的时候,那就是常量限定,永远不会改变。
女朋友就是私有变量,只有我这个类才能调用。
情人就是指针用的时候一定要注意,要不然就带来巨大的灾难。
1..停止全体Activity的方法
ActivityManager activityMgr = (ActivityManager) OneActivity.this.getSystemService(ACTIVITY_SERVICE);
activityMgr.restartPackage(getPackageName());
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2. android.os.Process.killProcess(android.os.Process.myPid())//获得PID
3. 任务管理器方法
首先要说明该方法运行在Android 1.5 APILevel为3以上才可以,同时需要权限
ActivityManager am= (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系统会将,该包下的 ,全体进程,服务,全体杀掉,就能够杀干净了,要注意加上
4. 根据Activity的声明周期,我们知道Android的窗口类提供了历史栈,我们可以通过stack的道理来奇妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的全体Activity。
在A窗口中使用上面的代码调用B窗口
Intent intent = newIntent();
intent.setClass(Android123.this,CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//注意本行的FLAG设置
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法便可全体退出。
5.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理全体Activity。并提供退出全体Activity的方法。代码如下:
public classScreenManager {
private staticStack activityStack;
private staticScreenManager instance;
privateScreenManager(){
}
public staticScreenManager getScreenManager(){
instance=newScreenManager();
}
return instance;
}
//退出栈顶Activity
public voidpopActivity(Activity activity){
activity.finish();
activityStack.remove(activity);
每日一道理
记不清有多少个夜晚,在我翻阅纸张的指间滑落;记不清有多少支蜡烛,在我的凝视中化为灰烬。逝者如斯,我时时刻刻会听见自己对生命承诺的余音,感到岁月的流转在渐渐稀释我的年少无知,我愿自己是一只上足了发条的时钟,在昼夜不停的流转中留下自己充实的每一刻。
activity=null;
}
}
//获得以后栈顶Activity
public ActivitycurrentActivity(){
Activityactivity=activityStack.lastElement();
return activity;
}
//将以后Activity推入栈中
public voidpushActivity(Activity activity){
activityStack=newStack();
}
activityStack.add(activity);
}
//退出栈中全体Activity
public voidpopAllActivityExceptOne(Class cls){
while(true){
Activityactivity=currentActivity();
break;
}
break;
}
popActivity(activity);
}
}
}
2.android开辟时,finish()跟System.exit(0)的区别
这两天在弄android,遇到一个问题:所开辟的小游戏中有背景音乐,玩的过程当中始终有音乐在放着,然后在我退出游戏后,音乐还在播放!
我看了一下我最开始写的退出游戏的代码,就是简略的finish()语句。我想应该是这个地方出了问题。后来想了想,以前似乎见过有用System.exit(0)退出游戏的,然后就尝试了一下,发现问题果然处理了。
当初来完全弄清楚两者的区别。
首先一个Activity是有生命周期的,onCreate,onStart,onResume,onPause,onStop,onDestroy...
finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有当即释放内存,活动的资源并没有被清理;当调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。
其实android的机制决定了用户没法完整退出应用,当你的application最长时间没有被用过的时候,android自身会决定将application关闭了。
文章结束给大家分享下程序员的一些笑话语录:
爱情观
爱情就是死循环,一旦执行就陷进去了。
爱上一个人,就是内存泄露--你永远释放不了。
真正爱上一个人的时候,那就是常量限定,永远不会改变。
女朋友就是私有变量,只有我这个类才能调用。
情人就是指针用的时候一定要注意,要不然就带来巨大的灾难。
相关文章推荐
- 两种退出android程序全部activity的方法
- Android使用Theme自定义Activity进入退出动画的方法
- Android 连续点击back button退出当前Activity的两种实现方法
- 退出Activity的方法
- Android 中 退出多个activity的经典方法
- .net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
- 关于一次退出多个Activity的方法
- windows编程中关于“关闭窗口无法退出进程”的解决方法
- Android中退出Activity的方法
- python tkinter窗口弹出置顶的方法
- [置顶] 【Android】双击返回键,退出android应用程序 双击两次退出程序提示功能 三种实现方法
- Android 将List<Bean>数据写入文件,从文件中读取;以及多个 Activity 的退出方法
- Android程序中有多个Activity时的可全部退出方法
- VC关于置顶窗口的方法小结
- .net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
- [置顶] viewPager中的Fragment向其他activity传值方法|activity向activity传值方法
- Android双击返回键退出Activity的两种方法【转】
- Android结束Activity退出程序的一种有效方法
- Qt获取管理员权限、窗口置顶并选中,关闭最后一个窗口时应用程序不退出
- .net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法