和尚我中午和朋友闲聊,被问到 Activity 与 Fragment 的生命周期,以为是很基础的东西,基本可以把生命周期说全,但是被问到 Activity 与 Fragment 交互的生命周期运行顺序,切换 Fragment 时候的生命周期顺序,以及切换完之后退出时的生命周期…瞬间感觉基础知识太不扎实了。 不禁问一下和尚自己:我真的了解 Fragment 的生命周期么?
前言 最近这几天一直在研究官方的MVVM的实现,使用起来其实难度并不大,并且如果结合DataBinding和Dagger2 代码写的都要飞起来了,不要太好。不过我们不能仅仅停留在使用的层面上,了解每个部分是如何工作的,探索官方的实现方式,这样技术才能进步,看源码的过程中我们可以带着几个问题去探索: Lifecycle是如何感知到Activity/Fragment的生命周期的? ViewModel的生命周期是如何控制。 LiveData中的数据是如何根据Lifecycle生命周期进行通知的? 预计会写三篇文章
Fragment在Android 3.0( API 11)引入,是为了支持在大屏上显示更加动态、灵活的UI,比如在平板和电视上。Fragment可以看作是嵌套的Activity,类似ActivityGroup,但是开销肯定没有ActivityGroup那么大,每一个Fragment管理着一个View,Fragment彼此之间相互独立,有自己的生命周期,这个生命周期是在Activity生命周期中的。Fragment可以用来解决屏幕适配和动态创建View的问题。 一个Fragment总是嵌入到一个Activi
Fragment的主要功能就是创建一个View,并且有一个生命周期来管理这个View的创建和销毁。Fragment的生命周期与Activity的生命周期类似,都会有一些回调方法,你所做的工作就是利用好
Fragment作为Android最基本,最重要的基础概念之一,也是Activity的好搭档,在开发中经常会和他打交道。今天的三问就说关于Fragment:
页面停留时长作为应用统计的北极星指标里的重要指标之一,统计用户在某个页面的停留时长则变得很重要。而Fragment作为Android中页面的重要组成部分,其停留时长的统计就显得非常重要。目前业界能搜索到的方案,主要有两种方案:
前言 作为MVVM 系列的第二篇,我们来看一下之前提出的第二个问题,就是ViewModel是如果控制生命周期的,并且保证在一定范围内的唯一性。 ViewModel的生命周期 先上一张官方的生命周期的图
如果我们在Fragment和它的宿主Activity的生命周期中都加上Log日志,你能顺利写出他们的执行顺序吗?我们先来看一张Google官方的图片:
需要熟悉Activity的生命周期 通过Activity的周期去对比理解和记忆Fragment生命周期
看了一篇关于ViewPager2软文后,我发现最新的Fragment代码淘汰了setUserVisibleHint方法,转而支持用setMaxLifecycle方法,setMaxLifecycle言外之意是设置最大生命周期,懂行的人应该知道,Fragment一直都是无法直接设置生命周期,必须通过add、attach、remove、detach、show、hide方法间接干预,本来就此功能,简单介绍一下setMaxLifecycle的原理和上手效果;
一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。 一、Fragment状态 与Activity类似的是,Fragment也存在如下4种状态: 运行状态:当前Fmgment位于前台,用户可见,可以获得焦点。 暂停状态:其他Activity位于前台,该Fragment依然可见,只是不能获得焦点。 停止状态:该Frag
我觉得这篇文章讲的非常的好 所以转载过来,给大家参考,其实如果有时间,最好是自己去运行下,这样印象更深了
Android从3.0开始引入了Fragment的概念,中文意思为碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示。Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了。
去面试的时候,我们也经常被问到这样的问题:项目用什么图片加载框架?为什么选择这个框架?glide是现在主流的图片加载框架,被问到的概率非常高。面试官这样问,最想听到的是什么答案?Lru算法原理还是三层缓存的理解?以我的理解,Lru和三层缓存是很基本的,一般的图片加载框架都用到,这应该不是面试官真正的目的。面试官最想问的应该是glide最大的优点是什么?并且能够针对源码讲出是怎么实现的。本篇文章将围绕这两个问题去讨论。
自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片、片段。其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。
小伙伴们,在前面的文章中,我们谈到了Android开发中的自定义view的基本概念及方法等,本文我们实际举例自定义一个Fragment。
小伙伴们,在上文中我们介绍了Android组件Activity,本文我们继续盘点介绍Android开发中另一个非常重要的组件Fragment。
Android Lifecycle 是Jetpack组件库中的一个重要组件,它可以帮助我们更好地管理Activity、Fragment等组件的生命周期,从而避免内存泄漏和其他问题。本文将从以下几个方面来介绍Lifecycle的实现原理与使用技巧:
Fragment,直译为“碎片”,“片段”。 Fragment 表示 FragmentActivity 中的行为或界面的一部分。可以在一个 Activity 中组合多个片段,从而构建多窗格界面,并在多个 Activity 中重复使用某个片段。可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且可以在 Activity 运行时添加或移除片段(这有点像可以在不同 Activity 中重复使用的“子 Activity”)。
引言 Android中,我们管理界面的主要组件是Activity和Fragment。Android为我们提供了Activity和Fragment的生命周期,让我们知道组件的运行情况。我们可以在各个生命周期中加入一些相关的业务逻辑。 但是,要在每个生命周期中加入代码非常繁琐,并且,很容易造成耦合。在软件逐渐模块化、插件化的大背景下,我们希望能够在其他模块默默地监听Fragment的生命周期。Fragment只需要在启动时注册被监听即可。 通过,这样的手段,我们就能够将Fragment生命周期中的逻辑代码进行分
前言: 项目是基于平板开发的,设计的界面是要求横屏展示界面。所以我将所有的Activity都强制设置为横屏 android:screenOrientation="landscape" ----------------------------------------------------------------------------------------------------- 问题: 主界面,最常见的Activity+n个Fragment 我这里使用的hide、show Fragment的方式来切
Android应用开发:Fragment的非中断保存setRetaineInstance 引言 首先,要明确什么叫“非中断保存”。熟悉Fragment的开发人员都知道,Fragment是依附于Activity的。当Activity销毁时,Fragment会随之销毁。而当Activity配置发生改变(如屏幕旋转)时候,旧的Activity会被销毁,然后重新生成一个新屏幕旋转状态下的Activity,自然而然的Fragment也会随之销毁后重新生成,而新生成的Fragment中的各个对象也与之前的那个Fra
之前我们说过一期ViewModel,但是有读者反映还是有些面试题不会回答,今天就节选一些再来看看 :
原文地址: http://www.jianshu.com/p/963a9d146da7
Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上–例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.(http://developer.android.com/guide/topics/fundamentals/fragments.html)
之前写过一篇关于Fragment真正的onResume与onPause的文章,但是当时写的比较匆忙,并不是很严谨,导致问题多多,今天抽空更新下关于fragment在各种情况下的onResume与onPause的方法,首先附一张fragment的生命周期图:
在 Android开发之奇怪的Fragment 一文中,讲到了Fragment的基础知识,这次来重点讨论一下Fragment的动态使用。这种情况主要针对布局文件中用占位符,在Activity中进行切换Fragment的情况,分为两种: 1、使用replace方法把原有的Fragment替换掉; 2、使用hide和show方法,把已经添加过的Fragment再次隐藏或显示出来。 下面主要探讨一下这两种情况之间的区别 1、使用replace方法把原有的Fragment替换掉 public class MainA
在2022的今天,AndroidX 普遍的情况下,JetPack Lifecycle 也早已经成为了开发中的基础设施,小到 View(扩展库) ,大到 Activity,都隐藏着它的身影,而了解 Lifecycle 也正是理解 JetPack 组件系列库生命感知设计的基础。
Fragment 是 Android 中历史十分悠久的一个组件,它在 API 11 被加入,时至今日已成为 Android 开发中最常用的组件之一。Fragment 有了哪些新特性、修复了哪些问题,都是开发者们十分关心的话题。下面我们就来重新说一说 Fragment —— 不仅仅是说现在的 Fragment,还会回顾它的发展,并让您一瞥它未来的样子。
大概就是这个方法可以告诉当前Fragment的是否对用户可见,但是可以在生命周期外调用,所以生命周期的方法回调可能不是很准确。所以在Android x里面,Google推荐我们使用 setMaxLifecycle.
理论上该应用会由两个页面组成,一个负责管理记录列表界面,另一个负责管理记录明细界面。
AndroidX 自 1.1.0-alpha07 起, 为 FragmentTransaction 增加了新的方法 setMaxLifeCycle, 官方建议开发者以此取代setUserVisibleHint,这将带来如下好处:
在Android开发之Fragment动态使用一文中,说到replace方法切换Fragment,会造成Fragment不断销毁、创建,但是有没有办法实现像Activity一样通过栈的方式来管理Fragment呢?答案是可以的,本文就来探讨一下。 一、Fragment回退栈 Activity切换时,相信大家都知道是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回退栈,它是直接销毁再重建,但如果将Fragment任务添加到回退栈,情况就会不一样了,它就有了类似Activity的栈管理
网上关于Fragment相关的博客资料很多,写关于这个知识笔记是加深记忆,大神略过; 0x01 了解Fragment 当然看官方文档(http://www.android-doc.com/reference/android/app/Fragment.html),英文不是很好,勉强看懂; 从四个方面来描述: 1.老的平台使用情况介绍(api3.0介绍了Fragment) 2.生命周期(尽管与activity有紧密联系,但是他有自己的生命周期) 3.布局 4.回退栈 0x02 生命周
3月4日,Google重磅发布了 Flutter 2 !作为 Flutter 的重大升级,使用 Flutter 2 开发者可以用相同的代码,把使用 Flutter 开发的应用发布到五个操作系统:iOS,Android,Windows,macOS 和 Linux;以及运行到 Chrome 、 Firefo, Safari 或 Edge等浏览器的 Web 版本上,Flutter 甚至还可以嵌入到 Cars, TVs 和智能家电中。 作为一个Flutter开发者,也马上下载了Flutter 2.0 sdk,并将自己的Flutter项目运行到Chrome上,效果很好,就是代码中有些差别,Web端对图片以及dart的io包不支持等等。具体差异可以去Flutter官网查看。贴一张web端效果图。
📷 通过本文可了解 Fragment生命周期 详细方法解析 常见场景的生命周期流程 与Activity生命周期对比 1. 生命周期流程 📷 2. 详细方法解析 📷 4. 常见场景的生命周期流程 📷 4. 与Activity生命周期对比 Fragment、Activity的生命周期非常相似,具体对比如下图: 📷 至此,分析完毕。 4. 总结 本文对 Android 的 Fragment的生命周期进行了全面介绍
Android Architecture Components 是一组库,可帮助您设计健壮、可测试和可维护的应用程序。包含以下几个组件模块:
本节学习Fragment的生命周期,我先看Google官网提供的Fragment的生命周期的流程图
各位花粉好久不见,本人还没有从假期综合征中恢复状态,但是想到还有你们在,所以我的动力就立刻被充满啦!一直跟着我们学习的花粉们肯定会好奇, Activity虽然已经学会了,但是还是无法实现像微信或者某东、某宝一样做到切换展示的样式,或者有的小伙伴是在点击时手动去显示和隐藏不同的布局页面,可是根本无法实现所想要达到的交互效果,本期我们为大家重点介绍一下如何实现类似效果。
生命周期感知组件可以感知其他组件的生命周期,例如 Activity,Fragment等,以便于在组件的生命周期状态变化时做出相应的操作。支持生命感知的组件可以帮你更好的组织代码,让你的代码更轻,更好维护。
通过本文可了解 Fragment生命周期 详细方法解析 常见场景的生命周期流程 与Activity生命周期对比 1. 生命周期流程 2. 详细方法解析 4. 常见场景的生命周期流程 4. 与Activ
Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。
Glide这个图片加载框架有个比较好的一点就是图片加载回根据Activity或Fragment生命周期的变化而变化,假如Activity或者Fragment销毁的时候,Glide会停止加载,以节省资源防止内存泄漏。至于Glide内部是怎么实现这个功能,这就是我们这一篇的内容。 首先,我们又来看一下Glide最基础的加载语句:
我们都知道Activity可作为LifecycleOwner为LiveData的使用提供条件,那么Activity是如何实现LifecycleOwner的呢?
本文将对Android开发中的Activity&Fragment生命周期进行全面解析
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!
Fragment是在Android 3.0 (API level 11)中引入的Activity的子模块。初衷是为了适应大屏幕的平板电脑,我们只需要使用Fragment对UI组件进行分组、模块化管
领取专属 10元无门槛券
手把手带您无忧上云