0%

本文是关于ButterKnife的移植的第一篇:

先介绍基础知识,理解apt是什么,最终输出一个乞丐版BufferKnife注入工具。

这是读懂BufferKnife源码的基础。

第二篇占坑:具体讲解BufferKnife的移植。

阅读全文 »

我们经常接入一些第三方服务,一般使用相应服务的前提都是通过app_id,app_key获取access_token,然后每个请求带着access_token来执行。

通常,我们的做法可能是先判断有没有access_token,并且在有效期内,然后执行请求。但是,请求一定能成功吗?很有可能还会提示access_token过期或无效(比如:客户端时间修改。或者“单点登录”导致本机token失效)。所以,我们有可能会在请求的返回结果中判断是否有token失效的错误,然后重新请求token,重新执行业务请求。

阅读全文 »

在国内访问github,应该普遍是这种情况:图片、css经常加载不出来,clone操作超级慢,下载也一样慢。

今天我们总结一下使用github的正确姿势!解决上面的三种问题

阅读全文 »

参考网站

官网

Android开发教程(2019最新版,使用JetPack)

横向对比Jetpack、RxJava、Glide框架中对组件生命周期Lifecycle感知原理

学习笔记

  • ViewModel(持有页面数据)

    以注重生命周期的方式管理界面相关的数据。

    1
    ViewModelProviders.of(act)创建ViewModle

    原理: 通过添加一个 fragment 到 activity 中,这个 fragment 便能够接收到各个生命周期回调。

  • ViewModelSavedState

    比ViewModel活得长一些,可以处理因为系统内存不足等引起的act被清理。

    等价于自己处理onSaveInstanceState()

  • LiveData(通知页面数据to视图)

    感知数据的变化,通知视图

    使用:

    1
    2
    3
    调用 liveData.observe(),让界面监听数据的改变
    liveData.setValue()设置数据(必须主线程)
    liveData.postValue()设置数据

    理解:观察者模式;可以感知生命周期(如:act destroy后就不通知了)。

    实践:LiveData通常会配合ViewModel来使用,ViewModel负责触发数据的更新,更新会通知到LiveData,然后LiveData再通知活跃状态的观察者。

    原理:依赖于Lifecycle,所以可以感知LifecycleOwner生命周期的变化。

App的启动流程简单来讲包括以下内容:fork进程、启动binder、loop循环、App和AMS双向通信的建立、生命周期回调、App和WMS双向通信的建立。

把这些串起来,是这篇博客的目标。

阅读全文 »

对于移动端开发,抓包应该是必备技能之一了。

比如,做一个新业务,接口设计可以参考一下竞品。这样可以少走弯路,还能在竞品的基础上做出优化。

抓http?真没必要写这篇博客。咱们今天聊一聊抓https。

阅读全文 »