fragment生命周期

Android 架构组件之 Lifecycle

坚强是说给别人听的谎言 提交于 2019-12-31 20:53:17
文章目录 1. 为什么要使用 Lifecycle? 1.1 在 Lifecycle 出现之前,实现 Activity 与 Presenter 的绑定 1.2 使用 Lifecycle 完成 Activity 与 Presenter 的绑定 2. 分析 Lifecycle 的组成及实现原理 2.1 Lifecycle 在 Activity 中的使用 2.2 Lifecycle 在 Fragment 中的使用 3. 总结一下 Lifecycle 的使用 参考链接 Lifecycle 是 Google 给出的架构组件之一,它能够感知具有生命周期的组件(如 Activity 和 Fragment)的生命周期变化。本文将从以下几个方面对 Lifecycle 进行介绍: 为什么要使用 Lifecycle? 分析 Lifecycle 的组成及实现原理; 总结一下 Lifecycle 的使用 1. 为什么要使用 Lifecycle? Lifecycle 能够感知具有生命周期的组件(如 Activity 和 Fragment)的生命周期变化, 使用 Lifecycle 可以避免编写模板代码,同时生成组织性更好,更便于维护的代码。这是 Lifecycle 的特点,下面将从实际开发中的一个案例,来介绍为什么要使用 Lifecycle。 1.1 在 Lifecycle 出现之前,实现 Activity 与

面试常问知识点,Fragment+Activity+service等等

白昼怎懂夜的黑 提交于 2019-12-31 00:03:17
每一次去面试就是一次对自我知识的总结和审核,如果你想拿到大厂的offer.成功的通过一面二面三面四面,那么我分享的面试学习路线你可以来参考一下(PDF文档版见如下) 那么面试中最常问的小知识点不懂的透彻怕是不行了 ( 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 ) https://github.com/xiangjiana/Android-MS 1 、四大组件是什么 1)Activity: 用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个 Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新 Activity 创建时,它就会放到栈顶,这个 Activity 就处于运行状态。 2)Service: 服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。 3)ContentProvider: 内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过 ContentResolver 类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后, ContentResolver 接口的 notifyChange 函数通知那些注册监控特定 URI 的 ContentObserver 对象。 如 果

[整] Android Fragment 生命周期图

十年热恋 提交于 2019-12-27 17:22:09
1 生命周期两张图 Fragment生命周期图: Fragment与Activity生命周期对比图: 2 生命周期分析 1. 当一个fragment被创建的时候,它会经历以下状态. onAttach() onCreate() onCreateView() onActivityCreated() 2. 当这个fragment对用户可见的时候,它会经历以下状态。 onStart() onResume() 3. 当这个fragment进入“后台模式”的时候,它会经历以下状态。 onPause() onStop() 4. 当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。 onPause() onStop() onDestroyView() onDestroy() // 本来漏掉类这个回调,感谢xiangxue336提出。 onDetach() 5. 就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。 onCreate() onCreateView() onActivityCreated() 6. fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。 onAttached() —— 当fragment被加入到activity时调用

Fragment 的生命周期及使用方法详解

旧城冷巷雨未停 提交于 2019-12-04 01:17:45
Fragment 的基础知识介绍 1.1 概述 1.1.1 特性 By hebang32624 Fragment 是 activity 的界面中的一部分或一种行为。可以把多个 Fragment 组合到一个 activity 中来创建一 个多面界面并且可以在多个 activity 中重用一个 Fragment。可以把 Fragment 认为模块化的一段 activity,它具 有自己的生命周期,接收它自己的事件,并可以在 activity 运行时被添加或删除。 Fragment 不能独立存在,它必须嵌入到 activity 中,而且 Fragment 的生命周期直接受所在的 activity 的影 响。例如:当 activity 暂停时,它拥有的所有的 Fragment 都暂停了,当 activity 销毁时,它拥有的所有 Fragment 都被销毁。然而,当 activity 运行时(在 onResume()之后,onPause()之前),可以单独地操作每个 Fragment, 比如添加或删除它们。当在执行上述针对 Fragment 的事务时,可以将事务添加到一个栈中,这个栈被 activity 管 理,栈中的每一条都是一个 Fragment 的一次事务。有了这个栈,就可以反向执行 Fragment 的事务,这样就可以在 Fragment 级支持“返回”键(向后导航)。 当向

源码解析Android架构组件ViewModel

匿名 (未验证) 提交于 2019-12-03 00:38:01
ViewModel 是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章: (一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 最为重要的就是ViewModel具有下面的生命周期,这就是ViewModel的最可贵之处: 正因为ViewModel有如此的生命周期,所以ViewModel在MVVM可以作为数据存储区,是连接View和Model重要组件,ViewModel的核心作用如下图所示: 1.ViewModel是怎么创建的? 2.ViewModel是怎么存储的? 3.ViewModel为什么可以实现旋转屏幕不销毁? 先放简单讲一下 ViewModel 的基本使用方法,我们在获取 ViewModel 的时候绝对不能直接使用 new 关键字去创建,需要使用 ViewModelProviders 去使用系统提供的反射方法去创建我们想要的 ViewModel ,下面是官方架构组件android.arch.lifecycle包下面的 ViewModelProviders 工具类用来获取ViewModel: /** * 注解by danxx on 2018

源码解析Android架构组件ViewModel

匿名 (未验证) 提交于 2019-12-03 00:37:01
ViewModel 是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章: (一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 最为重要的就是ViewModel具有下面的生命周期,这就是ViewModel的最可贵之处: 正因为ViewModel有如此的生命周期,所以ViewModel在MVVM可以作为数据存储区,是连接View和Model重要组件,ViewModel的核心作用如下图所示: 1.ViewModel是怎么创建的? 2.ViewModel是怎么存储的? 3.ViewModel为什么可以实现旋转屏幕不销毁? 先放简单讲一下 ViewModel 的基本使用方法,我们在获取 ViewModel 的时候绝对不能直接使用 new 关键字去创建,需要使用 ViewModelProviders 去使用系统提供的反射方法去创建我们想要的 ViewModel ,下面是官方架构组件android.arch.lifecycle包下面的 ViewModelProviders 工具类用来获取ViewModel: /** * 注解by danxx on 2018

Android初级开发笔记 -- 关于Fragment的回退栈

走远了吗. 提交于 2019-12-02 10:46:50
一直想好好研究一下项目中经常用到的Fragment。这篇先记录一下对Fragment的回退栈的学习。 文章目录 一、什么是Fragment 二、Fragment的生命周期 三、实例讲述Fragment回退栈 区别 总结 四、结语 一、什么是Fragment Fragment是Android3.0之后引入的可嵌入activity中的碎片化组件,实现了界面的最大化利用。有以下几个特点: (1)不可独立存在,但是有自己的生命周期。不过因为与activity关联在一起,生命周期会受activity影响。 (2) 可静态引入也可动态加载。推荐使用support-v4中的android.support.v4.app.Fragment而非系统内置的android.app.Fragment。因前者能让Fragment在所有Android系统版本中保持功能一致性。 二、Fragment的生命周期 先po一张经典生命周期图: 我们可以看到有几个关键的回调方法。 onAttach() Fragment和Activity建立关联的时候调用(获得activity的传递的值) onCreateView() 为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局) onActivityCreated() 当Activity中的onCreate方法执行完后调用

Android基础只是 Fragment相关

旧时模样 提交于 2019-12-02 09:17:16
https://www.jianshu.com/p/d9143a92ad94 https://www.jianshu.com/p/fd71d65f0ec6 一、Fragment生命周期 https://www.jianshu.com/p/927ca066120b 1、定义 Fragment 表示 FragmentActivity 中的行为或界面的一部分。 2、Fragment优点: 与Activity相比,Fragment占用内存降低,响应速度快 3、Fragment生命周期 1)onAttach: onAttach()在fragment与Activity关联之后调用。 初始化fragment参数可以从getArguments()获得, 当Fragment附加到Activity之后(onAttach 之后),就无法再调用setArguments()。 2)onCreate: fragment初次创建时调用。 此时只是创建Fragment,此时的Activity还没有创建完成,此时getActivity()可能为null。 3)onCreateView: 在这个fragment构造布局时调用。 4)onActivityCreated: 在Activity的OnCreate()结束后,会调用此方法。 此时,Activity已经创建完成,在这里才可以使用Activity的所有资源。 5

android Fragments详解六:处理fragement的生命周期

橙三吉。 提交于 2019-12-01 13:59:19
把条目添加到动作栏 你的 fragment 们可以向 activity 的菜单(按 Manu 键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法 onCreateOptionManu() 来完成。 你从 fragment 添加到菜单的任何条目,都会出现在现有菜单项之后。 Fragment 之后可以通过方法 onOptionsItemSelected() 来响应自己的菜单项被选择的事件。 你也可以在 fragemnt 中注册一个 view 来提供快捷菜单(上下文菜单)。当用户要打开快捷菜单时, fragment 的 onCreateContextMenu() 方法会被调用。当用户选择其中一项时, fragemnt 的 onContextItemSelected() 方法会被调用。 注:尽管你的 fragment 可以分别收到它所添加的菜单项的选中事件,但是 activity 才是第一个接收这些事件的家伙,只有当 activity 对某个事件置之不理时, fragment 才能接收到这个事件,对于菜单和快捷菜单都是这样。 处理 fragement 的生命周期 管理 fragment 的生命周期有些像管理 activity 的生命周期。 Fragment 可以生存在三种状态: Resumed: Fragment 在一个运行中的 activity

android之Fragment(官网资料翻译)

纵饮孤独 提交于 2019-12-01 04:12:34
Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()) Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。 设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.( http://developer.android.com/guide/topics/fundamentals/fragments.html ) 例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表