阅读Fragment源码笔记

【背上Jetpack之Fragment】从源码的角度看Fragment 返回栈 附多返回栈demo 系列文章 【背上Jetpack】Jetpack 主要组件的依赖及传递关系 【背上Jetpack】AdroidX下使用Activity和Fragment的变化 【背上Jetpack之Fragment】你真的会用Fragment吗?Fragment常见问题以及androidx下Fragment的使用新姿势 【背上Jetpack之Fragment】从源码角度看 Fragment 生命周期 Androi... 阅读详情

  Fragment具有自己完整的生命周期(当然和所关联的Activity是同步的)。相比Activity更加轻量级,但同时具有同样的功能,也能够将界面划分成不同的模块或者说是碎片,更加易于管理和维护。

  Fragment生命周期onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->onPause()->onStop()->onDestoryView()->onDestory()->onDetach()

  当Fragment从backstack返回栈中弹出时会被销毁执行onDestoryView()和onDestory()。

  Fragment核心在与FragmentManager对Fragment的管理。

  对Fragment的操作用FragmentTransaction(事务)描述。FragmentTransaction是一个抽象类,BackStackRecord是它的实现类,用于记录存放于backstack返回栈一个条目。BackStackRecord用一个双向链表维护了一组对Fragment的操作(包含旧的Fragment和新的Fragment)。当进行commit提交的时候会遍历整个双向链表来交给FragmentManager处理,FragmentManager会执行BackStackRecord的run方法完成一组对Fragment的操作。

  FragmentManager同样是一个抽象类,FragmentManagerImpl是它的的实现类。它维护了关联到Activity上的所有Fragment(添加进来的,处于激活的等不同状态),同时也维护了Fragment返回栈ArrayList<BackStackRecord> mBackStack。

  FragmentManager通过popBackStack()弹出最后一组存放在mBackStack返回栈中的操作,方法是调用最后一个BackStackRecord的popFromBackStack()方法,具体过程就是遍历BackStackRecord存放的操作,然后执行相反的操作-(弹出操作)。
  FragmentManager通过moveToState()管理对Fragment添加移除以及执行生命周期相关的方法(调用Fragment的performXXX方法)。

  Activity通过FragmentController与FragmentManager进行沟通,实现生命周期的同步(调用FragmentManager的dispatchXXX方法)。


Android框架攻击之Fragment注入 为了适应越来越大的设备屏幕,Android在3.X后引入了Fragment概念,作用是可以在一个屏幕上同时显示多个Activity,以达到充分利用屏幕的目的。关于Fragment的使用说明,可以阅读《Android Fragment完全解析,关于碎片你所需知道的一切》。其中,Fragment有一个很强大的功能,就是可以动态加载。这样可以让整个界面的开发更加灵活,可以根据不同的场景动态加加载不同的Activity。 回到今天的主题——利用Fragment实现注入攻击。从3.X后,android工 阅读详情

相关推荐

ctf——writeup

ctf线上赛——第三关地址:http://106.75.86.18:2222提示:ip spoofing——ip伪造首先访问目标地址,一个正常的网页,挺文艺的。上面有些提示。根据上面的提示,我们浏览网页。找了好久,终于找到你。这个跳转链接。(在这个页面下方)我们接着点击这个链接,就跳转到administrator.php这个页面了。看到这个登录页面,就要知道用户名,密码,可是没有怎么办。一开始也试

Child_by_dream的博客 1320

通过自定义FragmentController的FragmentHostCallback实现浮窗界面的管理

效果 FragmentController介绍 FragmentController用于控制fragment,它把activity的许多事件分发给fragment处理。更准确的说法是分配给fragment manager,然后由fragment manager分发给fragment。FragmentController通常都是在activity中创建的,并且activity作为FragmentC...

DragonCoding的专栏 1240

强化学习新手上路:用PPO-Clip轻松玩转Pendulum-v1(PyTorch保姆级教程)

本文提供了一份基于PyTorch的PPO-Clip算法实战教程,指导强化学习新手在Pendulum-v1环境中构建连续控制智能体。教程详细解析了PPO-Clip的核心机制,特别是其Clip机制如何限制策略更新幅度以确保训练稳定,并涵盖了从环境配置、策略网络设计、经验收集到完整训练框架搭建的全过程,是掌握连续动作空间强化学习的实用指南。

weixin_29062963的博客 270

Fragment源码阅读笔记

认知Fragment官方的翻译名为:片段,表示 Activity 中的行为或用户界面部分。相比Activity,Fragment的创建、销毁只需要依附到宿主Activity中,不需要与ActivityManagerService跨进程交互,所有的生命周期在宿主Activity中完成,可以在多个FragmentActivity中被多次重用,所以它更加灵活。

ashqal的专栏 3660

求助:有没有基于pscad的锂电池仿真模型

求助:有没有基于pscad的锂电池仿真模型 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变没有 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写...

qq_38922523的博客 1222

台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)

*完整源码地址**:[https://github.com/billiards/pcol-core](https://github.com/billiards/pcol-core)(包含详细文档与示例)通过这个项目,我们不仅创建了一个游戏,更构建了一个**可扩展的物理引擎框架**,为网页端复杂物理模拟开辟了新的可能性。**在线体验**:[https://pcol.billiards](https://pcol.billiards)(支持移动端触控操作)clone.velocity.x *= -0.92;

Loving_enjoy的博客 2796

Fragment笔记和源码阅读

官方说明 为了自动恢复Fragment状态,Fragment需要有(三选一): id tag 容器有id FragmentTransaction 是一个标准的Command模式,将transaction压栈,供后续back时进行revert操作,不调用addToBackStack将会导致Fragment的引用被释放 commit不是立即执行,而是向UI Handler post了一个runnabl

pouloghost的专栏 584

android13删除录屏权限提示框-去除录屏提示

在Android 13中,当应用请求屏幕录制权限时,系统会弹出一个权限提示框,要求用户明确授权。这个提示框是为了增强用户隐私保护,让用户知道有应用尝试录制屏幕。但是,在某些情况下,开发者可能希望避免显示这个提示框,以提供更流畅的用户体验。本文将介绍如何在Android 13中删除录屏权限提示框。

zhutoubenben的专栏 1880

Fragment相关源码阅读笔记(1)

以前也用过Fragment,大多数是结合ViewPager,使用support-v4里的类,但是对Fragment的只是停留在简单的使用,对具体的生命周期调用和Fragment的实现原理都不太清楚,最近看了一下Fragment相关的源码,在这里整理一下,加深理解,也防着以后又给忘了 总结:Fragment实现了对View进行异步动态添加移除管理,在这一点上相当于我们自己封装View进行相关业务处

yuanjw2014的专栏 391

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 674

WMRouter开源库源码阅读笔记(Fragment跳转)

文章目录1. 在使用WMRouter实现通过Path来跳转目标Fragment时,由于自己的问题给目标Fragment的构造函数传了一个Context参数,导致跳转不成功问题。在查找这个问题中熟悉了WMRouter的源码,在这里记录一下。 1. ...

weixin_40888127的博客 1339

【模型】OpenClaw 接入阿里云永久免费模型方案

Qwen2.5-7B-Instruct 模型为例。

海兰 4470

Fragment相关源码阅读笔记(3)FragmentManagerImpl

FragmentManagerImpl类是FragmentManager抽象类的具体实现,负责Fragment 的管理,主要有三方面的功能:          1/Fragment管理,添加移除等(add/remove/replace/hide/show)          2/事务管理,对Transactions的操作,addToBackStack和popBackStack        

yuanjw2014的专栏 1726

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android源码阅读笔记(1)----Fragment

前言今天是加入小红书的第一个月,工作已经慢慢步入正轨了,除了工作时间稍微有点长以外还是挺喜欢这里的,不过作为即使下了班也没人约的单身狗,想想也觉得无所谓了。这算是自我安慰吗,哈哈哈~老大说以后Android Team一周内要分享两次知识,让我们自己下去准备,每个人都要分享自己的知识。我觉得这点蛮好的,每个人做开发都有自己的经验和技巧,虽然现在很多东西网上都有,不过如果能面对面的分享出来,互相交流学习

金克丝的美好初衷 1633

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Fragment相关源码阅读笔记(2)FragmentTransaction

Fragment的管理中使用了事务的概念,类似于数据库中的事务,可以把对Fragment操作打包成事务提交,(API for performing a set of Fragment operations) ,通过FragmentTransaction的addToBackStack和FragmentManager的popBackStack可以进行事务入栈和回滚操作 1.FragmentTran

yuanjw2014的专栏 516

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WandEnhancer:3 步解除 WeMod 时长限制、解锁 Pro 并实现手机远程控制

免费的每日时长倒计时归零,WeMod 又用弹窗拦住了你正在用的功能。WandEnhancer 是一款开源本地工具,能在三步内解除 WeMod 的每日免费时长限制、解锁 Pro 功能,还附带手机远程控制面板。 ## 为什么先说安全:它只动本地文件,不联网、不上传 如果你担心过"这种工具会不会封号、是不是带毒",先打消顾虑:WandEnhancer 的所有改动都发生在你本机的 WeMod 客户端文

gitblog_00112的博客 805

android Fragment源码阅读

fragment源码分析

qq_44051286的博客 218

Android Studio实现小说阅读App

点击下方图标或左右滑动来切换书架、排行榜、分类,点击右上角搜索图标进入搜索界面从书架点击某本书籍进入阅读界面在排行榜处点击左上角♂/♀图标切换男生/女生,点击某个排行榜进入排行榜界面在分类处点击上方按钮切换男生/女生,点击某个分类进入分类界面。

振华OPPO的博客世界 3万+

Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord

原来一直只是使用Fragment,除了对一些常用API很熟悉外,对Fragment的内部原理还是不清楚,索性花了几天的时间,去阅读了Fragment相关的源码,从整体上对Fragment的框架有了一定深度的认识。当然,Fragment相关的类很多,Fragment内部的成员也很多,我目前还无法弄清楚Fragment的每一个细节,但整体上的正确认识有助于我们对细节的把握,也能对问题的查找、定位以及解决

chengkun_123的博客 2256

Android onRequestPermissionsResult在Fragment中不执行的问题

首先贴一下代码(主要代码): public class FriendFragment extends BaseFragment ...... //申请权限 if (permissions.length > 0) { ActivityCompat.requestPermissions(getActivity(), permissions, Constant.REQ_SC...

鹏鹏的博客 6387

开源框架--Glide源码阅读上

由于 Glide 实在是太庞大了,所以分了两篇文章。这里是上半部分,主要是 Glide 的生命周期相关逻辑。

Bonnie_cat的博客 1013

你真的懂 Fragment 吗?—— AndroidX Fragment 核心原理分析

点赞关注,不再迷路,你的支持对我意义重大! ???? Hi,我是丑丑。本文 GitHub · Android-NoteBook 已收录,这里有 Android 进阶成长路线笔记 & 博客,欢迎跟着彭丑丑一起成长。(联系方式在 GitHub) 前言 Fragment 是一个历史悠久的组件,从 API 11 引入至今,已经成为 Android 开发中最常用的组件之一; 在这个专题里,我们将从「使用 & 核心原理 & 面试」三个层面来讨论 Fragment。如果能帮上忙,请务必点

winskyan的专栏 2481

Fragment小结

Fragment是Android3.0之后加入的新特性,通常人们叫它碎片。但是,我觉得把它理解成一个View模块比较好,虽然它不是继承自View。如果阅读过源码就知道它是内置View对象从而实现View的特性。在设计模式里面通常说到,扩展一个类的方式有2种,第一就是类继承,第二就是对象组合,而开发经验告诉我们,要多用对象组合。所以Fragment是直接继承Object,组合View来实现View的

Main_Stage的专栏 1393

react源码阅读-基础

  react包基础概念以及React包的两个核心api阅读。阅读React包的源码版本为16.8.6。 基础概念 react包   react包的本质上是建立一个react相关数据类型的抽象屏障,它创建了一系列符合react渲染调度的数据结构,在各个react相关平台(dom,native,render)上进行渲染调度。   在阅读源码前,我一度认为诸如createElement和Compone...

tangding12的博客 843
上一篇: 阅读Service源代码笔记
下一篇: 通过ssh反向隧道及nginx反向代理实现外网控制内网nodemcu芯片
fg607
博客等级 码龄15年 2粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值