Activity之间的跳转及销毁所有Activity的正确姿势
2015-12-11 19:25
676 查看
一、结束当前Activity的方法有4种:
二、通过Intent跳转Activity
1、假设目前已经启动了3个Activity,分别叫做FirstActivity,SecondActivity,ThirdActivity,现在想在ThirdActivity中跳转至FirstActivity,即再启动一个FirstActivity,但不是变成1,2,3,1,而是变成1,即销毁掉中间所有的activity,同时要求保留FirstActivity上的数据。
2、与1类似,假设目前已经启动了3个Activity,分别叫做FirstActivity,SecondActivity,ThirdActivity,现在想在ThirdActivity中跳转至FirstActivity,即再启动一个FirstActivity,但不是变成1,2,3,1,而是变成1,即销毁掉中间所有的activity,这里要求不保留FirstActivity上的数据。
3、假设目前已经启动了3个Activity,分别叫做FirstActivity,SecondActivity,ThirdActivity,现在想在ThirdActivity中跳转至FirstActivity,即再启动一个FirstActivity,但不是变成1,2,3,1,而是变成2,3,1。
三、退出程序时,一次性关闭所有Activity界面。
封装一个类来对所有的Activity进行操作。
在每个Activity的onCreate()方法中添加一行代码,即将该Activity添加进启动的Activity列表中:
在程序退出操作处,写一行代码:
ps:参考了这篇帖子:http://java–hhf.iteye.com/blog/1826880,亲测有效,感谢博主。
//方法1 finish();
//方法2 System.exit(0);
//方法3 android.os.Process.killProcess(android.os.Process.myPid());
//方法4 this.onDestory();
二、通过Intent跳转Activity
1、假设目前已经启动了3个Activity,分别叫做FirstActivity,SecondActivity,ThirdActivity,现在想在ThirdActivity中跳转至FirstActivity,即再启动一个FirstActivity,但不是变成1,2,3,1,而是变成1,即销毁掉中间所有的activity,同时要求保留FirstActivity上的数据。
Intent intent = new Intent(this,FirstActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关掉所要到的界面中间的activity intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//设置不要刷新将要跳转的界面 startActivity(intent);
2、与1类似,假设目前已经启动了3个Activity,分别叫做FirstActivity,SecondActivity,ThirdActivity,现在想在ThirdActivity中跳转至FirstActivity,即再启动一个FirstActivity,但不是变成1,2,3,1,而是变成1,即销毁掉中间所有的activity,这里要求不保留FirstActivity上的数据。
Intent intent = new Intent(this,FirstActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关掉所要到的界面中间的activity startActivity(intent);
3、假设目前已经启动了3个Activity,分别叫做FirstActivity,SecondActivity,ThirdActivity,现在想在ThirdActivity中跳转至FirstActivity,即再启动一个FirstActivity,但不是变成1,2,3,1,而是变成2,3,1。
Intent intent = new Intent(this,FirstActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent);
三、退出程序时,一次性关闭所有Activity界面。
封装一个类来对所有的Activity进行操作。
/** * Activity的启动和销毁 * Created by xkc on 12/11/15. */ public class SysApplication extends Application { private List<Activity> mList = new ArrayList<>(); private static SysApplication instance; private SysApplication(){} public static synchronized SysApplication getInstance(){ if (null == instance){ instance = new SysApplication(); } return instance; } //将启动的进程添加进入list中 public void addActivity(Activity activity){ mList.add(activity); } //将list中的activity全部销毁 public void exit(){ for(Activity activity:mList){ if (activity != null){ activity.finish(); } } } //杀进程 @Override public void onLowMemory() { super.onLowMemory(); } }
在每个Activity的onCreate()方法中添加一行代码,即将该Activity添加进启动的Activity列表中:
SysApplication.getInstance().addActivity(this);
在程序退出操作处,写一行代码:
SysApplication.getInstance().exit();
ps:参考了这篇帖子:http://java–hhf.iteye.com/blog/1826880,亲测有效,感谢博主。
相关文章推荐
- 使用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