android中实现返回首页功能
2016-03-23 17:00
435 查看
关于返回首页功能的两种实现
最近需要实现一个返回首页的功能,刚开始自己的基本思路就是清除当前站内的所有activity但不包括MainActivity,这种方法也不难,CSDN上一搜就找到了答案。方案一
Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
这种做法就是把当前栈内的所有activity全部清除,然后再新建一个MainActivity,这种是最暴力的一种实现方式,不管MainActivity首页是否存在都直接重新创建,很影响体验,并且会消耗流量。
方案二
为了节能减排,减少多余的消耗,下面我们说说第二种实现方案。
一般首页MainActivity我们会将其启动模式launcherMode设置为singleTask模式,这种模式下,只要任务栈内存在该activity就不会重新创建,直接复用。
<activity android:name=".MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
//使用的时候直接启动activity就可以啦 //在MainActivity之上的activity会自动被清除 //符合栈的后进先出原则 Intent intent = new Intent(this, MainActivity.class); startActivity(intent);
这种方法要求比较高,不能定位到特定的activity,只能是首页MainActivity,这样才能保证逻辑上不会出错,如果需要在其他activity上使用逻辑上需要考虑是否符合当时的使用情景,当启动MainActivity之后栈内其上的activity将会被从栈中清除。
总结
其实方案二不是我等菜鸟能够想出来的,对android了解的甚少,对activity的任务站了解的也不够透彻,还有各种启动模式的标志位都不是很了解,多亏了博客大神任玉刚的书《android开发艺术探索》才能理解到这一层,多谢大神指点。最后希望这篇文章能够帮到希望学习的你。
相关文章推荐
- 使用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