保存Activity的状态
如前一节所述,系统默认下会在activity停止的时候保存其状态.如此一来,当用户导航到前一个activity时,其用户介面显示得跟离开时一样.然后,你可以—并且应该—提前使用你的activity的回调方法们保持它的状态,因为activity可能会被销毁然后被重新创建.当系统停止了你的一个activitie(比如当新的activity启动或任务被移到后台),系统可能为了释放内存会完全销毁那个activity.当这事发生时,activity的状态丢失.如果真发生了这种现象,系统依然知道那个activity在后退栈中占有一个位置,但是当activity被弄到前台时,系统必须重新创建它(而不是仅仅恢复它).为了避免丢掉用户的工作,你应该通过实现activity的onSaveInstanceState()
c
来提前保存状态.
关于保存activitystate的更多知识,请观http://blog.csdn.net/nkmnkm/article/details/7101178.
管理任务们
Android管理任务和后退栈的方式,如前面文章所述—通过把所有接连启动的activity放在同一个任务中并且是同一个后进先出的栈中—在大多数应用中工作得很好并且你无需关心你的activity如何与任务相关连或如何在后退栈中存在.然而,你可能决定要打破这种正常的行为.可能你想在你应用的activity启动时开始一个新的任务(而不是放置到当前栈中);或者,当你启动一个activity,你想把已经运行的它的一个实例提到前台来(而不是创建一个新的实例放在后退栈的顶端);或者,你希望当用户离开任务时,你的后退栈清除除了根activity以外所有的activity.
可以做这些事情,甚至更多事情,通过设置manifest中<activity>的属性和传到startActivity()的intent的flag.
在这一点上,你可以设置的最重要的<activity>属性有:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
可以使用的最重要的intent flag:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
注意:大多数应用不应改变activity和任务的默认行为.如果你确定必须要改变默认行为,你必需小心并且保证测试了activity在启动时和后退导航到它时的可用性.确保测试了与用户习惯相冲突的导航行为.
分享到:
相关推荐
即使那个activitie可能来自不同的应用,Android也靠着把两个activity保存在同一个任务中来实现这种无缝的用户体验. 一个任务是用户在执行某种工作时所交互的activitie的集合.activitie们放置在一个栈("后退栈")中,...
Task&BackStack;.mmap
博文链接:https://baby69yy2000.iteye.com/blog/173051
Simple Stack 这是一个简单的backstack实现,它理论上基于Flow 0.9
imsdroid 包含文档和android-ngn-stack,和库文件
The up-to-date, in-depth, complete guide to React Native. Create beautiful mobile apps with JavaScript and React
多个Backstack导航(导航组件) 到目前为止, 不支持底部导航中最常用的多种后台堆栈管理。 Google已经有一个,该演示了如何处理多个Backstack。 缺点: 无论用户打开的顺序如何,它总是将用户带回到第一个选项...
The benefits of using a full JavaScript stack for web development are undeniable, especially when robust and widely adopted technologies such as React, Node, and Express and are available. Combining ...
Android远程Stacktrace:改进 该项目是,它添加了许多重要功能: 可定制的接口,用于处理堆栈跟踪 通过将堆栈跟踪保存到自己的目录而不是应用程序的根文档目录,从而更好地处理文件系统 允许可选的调试日志记录,这...
stack(栈)在android 中的运用:自定义了一个Activity栈管理Activity
stack官方网站: https://docs.haskellstack.org/en/stable/README/ 首先: 在终端下键入下面这条命令: curl -sSL https://get.haskellstack.org/ | sh 出现以下情况: 在终端下输入命令: sudo apt install curl...
Fragment-Back-Stack Fragment Back Stack manager while displaying fragments on single activity and need to maintain on back press Purpose We know that there is activity stack in Android. We don't need ...
Android的NGN堆栈是一个NGN(下一代网络)堆栈为Android2.X(或更高版本) 设备
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入...
03_Communication Stack详解
heap与stack 的区别, 讲解的很详细了 小细节需要把握仔细了
Android下各语言加callStack打印信息的示例 包括C语言, C++,Java和Kernel Space。