- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在开发使用 Activity
和 Fragment
的新应用程序。它们之间有什么主要区别吗??
我在 Android 文档中找到了我想要的好答案。
文档描述
The most significant difference in lifecycle between an activity and a fragment is how one is stored in its respective back stack. An activity is placed into a back stack of activities that's managed by the system when it's stopped, by default (so that the user can navigate back to it with the Back button, as discussed in Tasks and Back Stack). However, a fragment is placed into a back stack managed by the host activity only when you explicitly request that the instance be saved by calling addToBackStack() during a transaction that removes the fragment.
主机 Activity
是否保留与其关联的不同 Fragment
的不同回栈以及单个应用程序保留多个堆栈的任何场景。 ??
最佳答案
Differences between Activity and Fragment lifecyle in Android
Fragment 是 Activity 的一部分,它为该 Activity 贡献自己的 UI。 fragment 可以被认为是一个子 Activity 。 fragment 用于有效利用更宽屏幕设备中的空间。
根据屏幕大小,一个 Activity 可能包含 0 个或多个 fragment 。一个 fragment 可以在多个 Activity 中重用,因此它就像 Activity 中的可重用组件。
fragment 不能独立存在。它应该始终是 Activity 的一部分。 Activity 可以在没有任何 fragment 的情况下存在。
fragment 生命周期比 Activity 生命周期更复杂,因为它有更多状态。生命周期状态如下图:
onInflate
在 fragment 生命的最开始,方法 onInflate 被调用。在这种方法中,我们可以在 XML 布局文件中保存一些配置参数和一些属性。
onAttach
在这一步之后 onAttach 被调用。只要 fragment “附加”到“父” Activity ,就会调用此方法,我们可以使用此方法存储有关 Activity 的引用。
onCreate
这是最重要的步骤之一,我们的 fragment 正处于创建过程中。此方法可用于启动某个线程以检索数据信息,可能来自远程服务器。 onCreateView 是在 fragment 必须创建其 View 层次结构时调用的方法。在此方法中,我们将在 fragment 内扩展我们的布局。
在这个阶段,我们不能确定我们的 Activity 是否仍然被创建,所以我们不能指望它进行一些操作。当“父亲” Activity 在 onActivityCreated 中创建并准备就绪时,我们会收到通知。
从现在开始,我们的 Activity 处于 Activity 状态并已创建,我们可以在需要时使用它。
onStart
下一步是onStart方法。在这里,我们像在 Activity onStart 中一样做一些常见的事情,在这个阶段我们的 fragment 是可见的,但它仍然没有与用户交互。
onResume
当 fragment 准备好与用户交互时,调用 onResume。
然后可能会发生 Activity 暂停,因此会调用 Activity 的 onPause。那么 onPause fragment 方法也被调用了。
之后,操作系统可能决定销毁我们的 fragment View ,因此调用 onDestroyView。之后,如果系统决定关闭我们的 fragment ,它会调用 onDestroy 方法。
这里我们应该释放所有活跃的连接等等,因为我们的 fragment 快死了。即使是在销毁阶段,它仍然依附于父亲 Activity 。最后一步是将 fragment 从 Activity 中分离出来,它会在调用 onDetach 时发生。
希望你能从中理解。
谢谢。
关于android - Activity 与 fragment 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23004519/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!