首页
学习
活动
专区
圈层
工具
发布

Glide4.0源码全解析(一),GlideAPP和.with()方法背后的故事

今天这篇文章先讲述一下 GlideApp和 with()背后的故事。 GlideApp如何诞生? 1、 @GlideModule注解做了什么事情?...其实这是最简单的一种情况,因为Application对象的生命周期即应用程序的生命周期,因此Glide并不需要做什么特殊的处理,它自动就是和应用程序的生命周期是同步的,如果应用程序关闭的话,Glide的加载也会同时终止...通过上图我们会发现不论传入Activity、FragmentActivity、Fragment最终都会调用图中红框中的方法,而这两个方法最终流程都是一致的就是那就是会向当前的Activity当中添加一个隐藏的...下面是两个方法的具体代码: 对应的app包和v4包下的两种Fragment的情况。 接下来我们看fragmentGet()和supportFragmentGet()两个方法。...于是Glide就使用了添加隐藏Fragment的这种小技巧,因为Fragment的生命周期和Activity是同步的,如果Activity被销毁了,Fragment是可以监听到的,这样Glide就可以捕获这个事件并停止图片加载了

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Glide源码解析(一)

    Bitmap,以最小化昂贵的垃圾回收和堆碎片影响; 深度的生命周期集成,以确保仅优先处理活跃的Fragment和Activity的请求,并有利于应用在必要时释放资源以避免在后台时被杀掉。...目前,在 Android 开发中 Glide 算得上是图片加载框架中的佼佼者了。其巧妙的设计和卓越的性能令人赞叹不已。...RequestManagerRetriever 通过上面一堆 with 重载的方法可以看出,get 方法是和 with 一样也有一堆重载的,并且和 with 是一一对应的。...在这里,就主要顺着 get(@NonNull FragmentActivity activity) 来讲吧,其他的 get 方法里的逻辑也是类似的。...,生命周期和 Application 一致;否则得到的 requestManager 生命周期就是和 Activity/Fragment 一致了。

    1.2K20

    Glide源码解析(一)

    Bitmap,以最小化昂贵的垃圾回收和堆碎片影响; 深度的生命周期集成,以确保仅优先处理活跃的Fragment和Activity的请求,并有利于应用在必要时释放资源以避免在后台时被杀掉。...目前,在 Android 开发中 Glide 算得上是图片加载框架中的佼佼者了。其巧妙的设计和卓越的性能令人赞叹不已。...RequestManagerRetriever 通过上面一堆 with 重载的方法可以看出,get 方法是和 with 一样也有一堆重载的,并且和 with 是一一对应的。...在这里,就主要顺着 get(@NonNull FragmentActivity activity) 来讲吧,其他的 get 方法里的逻辑也是类似的。...,生命周期和 Application 一致;否则得到的 requestManager 生命周期就是和 Activity/Fragment 一致了。

    63520

    Android项目开发填坑记-Fragment的onBackPressed

    Fragment中的返回 在Fragment中经常用到自定义标题栏,而返回按钮的点击事件一般设置为:getActivity().onBackPressed();,这样可以使得点击返回按钮和点击手机上的返回键的效果一致...Fragment3.0和FragmentV4 Fragment3.0的getActivity().onBackPressed()默认调用了Activity的onBackPressed()方法,方法里面使用的...getFragmentManager()获取FragmentManager对象弹出栈内的Fragment3.0版的Fragment FragmentV4的getActivity().onBackPressed...{ ... } Fragment和Activity版本不匹配时 开发的时候,或许并不能达到Fragment版本和对应的Activity相匹配的理想状态,那么就有了下面的一个比较完善的解决方案: 解决方案...传送门:Android项目开发填坑记-Fragmen的onAttach方法 PS: 你可以关注的我Github、CSDN和微博

    1.3K20

    Fragment中调用startActivityForResult的那些坑

    调用的几种方式 用getActivity方法发起调用,只有父Activity的onActivityResult会调用,Fragment中的onActivityResult不会被调用 直接发起startActivityForResult...调用,当前的Fragment的onActivityResult,和父Activity的onActivityResult都会调用 用getParentFragment发起调用,则只有父Activity和父...Fragment的父FragmentActivity,所以会调用到父FragmentActivity的startActivityFromFragment方法 //FragmentActivity.class...who,在FragmentActivity中把所有调用startActivityFromFragment方法的fragment的requestCode和who通过key-value的方式保存在mPendingFragmentActivityResults...所以如果想在子Fragment中监听到onActivityResult方法的回调,就不要用这种方式 getActivity方法发起调用 这个就更简单了,直接调用的是父Activity的onActivityResult

    2.2K10

    带有Vagrant和Virtualbox的Elasticsearch集群

    模拟分布式存储和计算环境的一种简单方法是将Virtualbox作为VM(“虚拟机”)的提供者,将Vagrant作为配置,启动和停止这些VM的前端脚本引擎。...出于我们的目的,我们更喜欢具有以下标准的“仅限主机”,“私人”网络。 guest和host应该能够互相交谈。我们希望客户组成一个集群并一起工作以启用服务。主机应该能够控制和使用客户群提供的服务。...主机是服务的使用者,它可以将其转换为它自己的服务,如果它愿意,它可以提供给外部。 最后,为了便于使用和移植,每个访客在创建时应具有IP地址和名称“已分配”。...我想要一种各种各样的交钥匙解决方案,其中我可以预先编写VM群集创建的所有方面,并且只需运行它就可以在安装,启动和饲养所有工具的情况下创建该群集。...这为我们提供了第2节中我们想要的网络模型。 #19行,即将供应的工具和应用程序的虚拟机。非常强大和方便。我们可以使用我们希望客户负责的应用程序自动化启动集群中每个成员的过程。

    2.4K30

    史上最好用的Android全量版本更新库XUpdate使用指南

    mHeightRatio float -1(无约束) 版本更新提示器高度占屏幕的比例 组成结构 在了解了版本更新的结构和各部分的功能后,我们就可以根据我们实际的需求进行自定义了.以下是版本更新的组成结构...安装的功能 _XUpdate.startInstallApk(getContext(), FileUtils.getFileByPath(PathUtils.getFilePathByUri(getContext...答:最好的解决方法就是传入的context使用的是AppCompatActivity, 而不是Activity或者FragmentActivity!...如果你一定要使用Activity或者FragmentActivity,那么请设置其主题为Theme.AppCompat类型的主题。...5.问:我的应用和普通应用有些特别,并不能使用系统的安装api安装程序,我该怎么办? 答:如果你的apk安装与众不同,你可以实现自己的apk安装器。

    3.5K30

    Android从零开始搭建MVVM架构(3)——ViewModel

    ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据,ViewModel中数据会一直存活即使 activity configuration发生变化。...1.数据持久化 activity 在销毁重建时,之前我们可以用 activity 的onSaveInstanceState()机制保存和恢复数据,但缺点很明显,onSaveInstanceState只适合保存少量的可以被序列化...UI controller 比如 Activity 、Fragment 是设计用来渲染展示数据、响应用户行为、处理系统的某些交互。如果再要求他去负责加载网络或数据库数据,会让其显得臃肿和难以管理。...ViewModelStore,并提供了用mFactory和ViewModelStore生成 ViewModel 的 get 方法。...至此ViewModelProviders of 做了哪些事情呢: 1、初始化了ViewModelProvider内部维护了 用于创建 VM 的 Factory,和用户存放 VM 的ViewModelStore

    1K20

    Android Jetpack 组件之 ViewModel 详解

    ViewModel 具有生命周期意识,会自动存储和管理 UI 相关的数据,即使设备配置发生变化后数据还会存在,我们就不需要在 onSaveInstanceState 保存数据,在 onCreate 中恢复数据了...应该和旧的 ViewModelStore 一样保存对应 ViewModel 的所有信息,只有调用了对应的 clear() 方法才会通知这个 ViewModel 不在使用,其对应的 ViewModelStore...,实际上像 FragmentActivity 、Fragment 等都间接或直接实现了这个接口,这一点和 LifecycleOwner 一样,源码参考如下: Activity 间接实现: ```java...); } }); titleBinding.rvData.setLayoutManager(new LinearLayoutManager(getActivity...每个 Fragment 都有自己的生命周期,可以随意替换和移除都不会互相影响另一个 Fragment 的正常工作。

    1.6K10

    笔记64 | 个人项目“易来”开发记录《二》处理Fragment中返回的问题

    需求描述 问题: 一个WebView放在Fragment中,我们都知道webView有一个goBack()方法,可以通过该方法对网页进行后退处理,由于Fragment本身并没有监听onBackPressed的方法...WebView可以后退网页的时候,进行后退网页,当没有可后退的网页时(首页状态),点击返回调Activity中的onBackPressed方法; 处理方案 这位大神的方案大神讲得通俗易懂,对我来说难度稍大...MianActivity: public class Main extends FragmentActivity implements OnCheckedChangeListener,Framelayout3...(getActivity() instanceof BackHandLerInterface)) { throw new ClassCastException("Hosting...BackHandlerInterface"); }else{ backHandLerInterface = (BackHandLerInterface) getActivity

    69880
    领券