前言
在App中,和用户交互的主要是Activity和Fragment,在交互的过程中,我们需要执行各种各样的任务。
- 好的任务的管理需要关注组件的生命周期。举个例子:在生命周期开始的时候,我们要启动任务的执行,在生命周期结束的时候,我们要停止任务的执行,这样可以很好的节约系统资源。
- 不好的任务的管理基本上不去关注生命周期,这样比较严重的浪费系统资源,给用户带来很不好的体验 :(
所以我们在对任务的管理上要着重考虑 Activity和Fragment 的生命周期。
如何去获取Activity和Fragment生命周期?
问题:
Activity和Fragment都是我们自己实现的,外在的框架如何知道Activity和Fragment的生命周期?
回答:
可行的方式是:
-
我们主动去告诉这些框架当前Activity和Fragment的生命周期,如在
onCreate
,在onDestroy
的时候去告诉框架,我开始了,我结束了。但是这样很不友好:增加了代码量,也容易忘记告诉框架Activity和Fragment的生命周期。 - 让框架主动去获取当前 Activity和Fragment的生命周期,这样我们就非常轻松啦。Glide就是去主动获取当前Activity和Fragment的生命周期的。
Glide主动获取当前Activity和Fragment的生命周期
Glide为你当前Activity和Fragment生一个孩子,这个孩子跟你的Activity和Fragment的生死存亡。利用这个孩子,Glide轻易掌握其生命周期。
如何实现?看代码吧:
Glide加载图片的代码:
Glide.with(this)
.load(_url)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.loading)
.into(_iv);
Glide.with(this)
将当前Activity和Fragment的实例传入进去。
Activity和Fragment的实例交给RequestManagerRetriever来处理。我们继续看它是如何处理的:
将一个fragment:SupportRequestManagerFragment加入到你的Activity或者Fragment。这个SupportRequestManagerFragment的生命周期与你的你的Activity或者Fragment完美贴合。
代码实现:
getSupportRequestManagerFragment(fm):
孩子 SupportRequestManagerFragment
他是一个fragment:
它有以下特色:
- 没有view,也就是没有界面。
- 它持有一个RequestManager,在适当的时候调用其方法。(系统内存紧张的时候)
- 明确的生命周期调用,也就是把生命周期告诉某些人,某些组件,让他们来做相关的事情。(告诉RequestManager)
网友评论