Android完全退出程序,不是返回到上一个Activity
2016-05-28 17:18
519 查看
程序有一个欢迎界面,有多个activity互相跳转,所以想要设置一个menu键之后又选择退出的项。
尝试了很多的方法,Android的activity在创建之后,也就是调用了onCreate函数之后就进入了一个栈区,将创建了的activity按顺序放进去,finish()和System.exit(0)只能结束当前activity,而不能结束所有。而网上大量流传的所谓终极方法:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
表面上退出了程序进入了手机的主页面,但是当你再次打开此程序的时候就会发现记录了上次使用时的上一个activity,也就是说并没有真正意义的关掉其他的活动。
询问老师之后得知一个方法,就是在每个startActivity(intent);之前加上finish(this)来结束当前活动,这样子实现了menu功能。但是带来两个缺点:1、返回键直接退出 2、所有的activity每次跳转之后就关闭,也就是说再次创建时需要重新载入,慢而用户体验差。
最后,用了一个这样子的方法。
自己写了一个类,就是一个链表来存放所有创建了的activity。而在退出时将链表中的activity全部finish(),这样子就实现了完全退出功能,而且不影响返回键功能。代码如下:
然后在每个Activity的onCreate方法中调用 ExitApplication.getInstance().addActivity(this);,然后在处理退出请求中直接调用 ExitApplication.getInstance().exit(this);即可。
尝试了很多的方法,Android的activity在创建之后,也就是调用了onCreate函数之后就进入了一个栈区,将创建了的activity按顺序放进去,finish()和System.exit(0)只能结束当前activity,而不能结束所有。而网上大量流传的所谓终极方法:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
表面上退出了程序进入了手机的主页面,但是当你再次打开此程序的时候就会发现记录了上次使用时的上一个activity,也就是说并没有真正意义的关掉其他的活动。
询问老师之后得知一个方法,就是在每个startActivity(intent);之前加上finish(this)来结束当前活动,这样子实现了menu功能。但是带来两个缺点:1、返回键直接退出 2、所有的activity每次跳转之后就关闭,也就是说再次创建时需要重新载入,慢而用户体验差。
最后,用了一个这样子的方法。
自己写了一个类,就是一个链表来存放所有创建了的activity。而在退出时将链表中的activity全部finish(),这样子就实现了完全退出功能,而且不影响返回键功能。代码如下:
package Utils; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.Application; import android.content.Context; public class ExitApplication extends Application { private List<Activity> list = new ArrayList<Activity>(); private static ExitApplication ea; private ExitApplication() { } public static ExitApplication getInstance() { if (null == ea) { ea = new ExitApplication(); } return ea; } public void addActivity(Activity activity) { list.add(activity); } public void exit(Context context) { for (Activity activity : list) { activity.finish(); } System.exit(0); } }
然后在每个Activity的onCreate方法中调用 ExitApplication.getInstance().addActivity(this);,然后在处理退出请求中直接调用 ExitApplication.getInstance().exit(this);即可。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories