![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
安卓源码分析
文章平均质量分 82
super米果儿
这个作者很懒,什么都没留下…
展开
-
LiveData源码解析
上一篇我们分析了Lifecycle的工作流程(不了解Lifecycle的可以先看一下Lifecycle源码解析)。这篇咱们来分析一下LiveData。 它能干什么? LiveData是一个数据持有者,在数据发生改变后根据被观察者(Activity/Fragment)的生命周期,通知观察者。 角色分配;我们一般是在Activity/Fragment去观察数据的变化,被观察者显然就是数据了,它们通过LiveData的observe方法产生关联...原创 2021-07-17 15:28:51 · 121 阅读 · 0 评论 -
Lifecycle源码解析
Jetpack已经推出很长时间了,相信很多组件大家都用过;今天咱们来分析分析Lifecycle,它是怎么工作的呢?Let's go! 首先,它能干什么?Lifecycle可以在我们需要的地方进行生命周期监听,需要与Activity/Fragment进行绑定,从而在Activity/Fragment生命周期改变时调用监听类的方法,从而实现资源释放。 使用呢,就简单的提一下:需要监听的类实现LifecycleObserver接口,然后在Activity/F...原创 2021-07-17 11:42:20 · 174 阅读 · 0 评论 -
代理模式及hook实战
上一篇大体说了一下Java中的反射技术,这篇正纳闷来讲讲代理模式和hook,最后会实战一下,hook一下Toast。代理模式(委托模式)有2种:静态代理和动态代理。其优点是扩展和隐私,对外只提供一个代理访问,只有我自己可以用真正的类做操作。安卓系统中大量用到代理模式,比如获取系统的服务,App进程只能拿到服务的代理对象。 静态代理,即在编译时已确认自己的任务。首先定义一个接口:然后会有个类实现它:在代理模式中,它将成为被代理类。然...原创 2021-06-28 15:08:34 · 502 阅读 · 0 评论 -
从源码分析PagerAdapter notifyDataSetChanged刷新数据的最佳姿势
最近在做项目的时候有个需求是ViewPager分为2页内容,2个页面都有用户的一些信息,比如vip状态等。在当前页可以充值vip,所以理所当然的,在充值成功后当前页面用户的vip状态发生变化,需要刷新。 直接撸代码,充值成功后直接调用了adapter的notifyDataSetChanged方法,发现页面没有修改;打log也发现页面没有刷新的操作,网上大概找了一些资料,有个方法是:如上,重写getItemPostion并返回POSITION_NONE,问题解决了。不过总感觉稀里糊涂...原创 2021-04-02 11:47:32 · 543 阅读 · 0 评论