近段时间的学习碎片整理(2)

Lifecycles

        Lifecycles可以让任何一个类都能轻松感知到 Activity的生命周期,同时又不需要在Activity中编写大量的逻辑处理。

使用步骤:

  • 定义一个方法实现LifecycleObserver,方法中可以定义任何方法
  • 用@OnLifecycleEvent注解感知Activity的生命周期
  • 在Activity中的oncreate用LifecycleOwner把定义的方法加入进去
    • lifecycle.addObserver
    • Activity是继承自AppCompatActivity的,或者你的Fragment是继承自 androidx.fragment.app.Fragment的,那么它们本身就是一个LifecycleOwner的实例
  • 主动获知当前的生命周期状态
    • 要在MyObserver的构造函数中将Lifecycle对象传进来,在任何地方调用lifecycle.currentState来主动获知当前的生命周期状态

EventBus(参考Android EventBus 的使用 - 简书)

        EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。

        使用:

                1、Event:事件,可以定义一个通用的事件,里面放入flag标志是什么事件,携带的参数可以用Any?类型

                2、Subscriber:事件订阅者,即事件接收方,3.0之前有固定写法,3.0之后方法名可以随意命名,加上@subscribe即可,指定线程模型,线程模型有:POSTING:默认,表示事件处理函数的线程跟发布事件的线程在同一个线程。MAIN:表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。BACKGROUND:表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。ASYNC:表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作

  • POSTING:默认,表示事件处理函数的线程跟发布事件的线程在同一个线程。
  • MAIN:表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。
  • BACKGROUND:表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。
  • ASYNC:表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作。

                3、Publisher:事件的发布者,即事件发送方,可以在任意线程里发布事件。一般情况下,使用EventBus.getDefault()就可以得到一个EventBus对象,然后再调用post(Object)方法即可。

        黏性事件:指发送了该事件之后,能被其他订阅者接收,即某个activity接收事件后,再另一个activity也能接收该事件。调用EventBus的postSticky方法可以用来发布黏性事件

MMKV(参考MMKV使用 - 简书

        使用:

                1、引入依赖

 implementation 'com.tencent:mmkv:1.0.15'

                2、初始化

 MMKV.initialize(this)

                3、存、取、删数据

//……一个全局的实例
// MMKV kv = MMKV.defaultMMKV();

 MMKV mMkv = MMKV.mmkvWithID(Constant.MMKV_PREFERENCES, MMKV.SINGLE_PROCESS_MODE);
// 存储数据:
mMkv.encode("Stingid", "123456");
mMkv.encode("bool", true);
mMkv.encode("int", Integer.MIN_VALUE);

// 取数据:
String id=mMkv.decodeString("id", null);
boolean bValue = mMkv.decodeBool("bool");
int iValue = kv.decodeInt("int");
// 移除数据:
 mMkv.remove("Stingid");
 mMkv.remove("bool");
 mMkv.remove("int");

Glide(参考Google推荐——Glide使用详解 - 简书

        Glide,图片加载库,对于 Android SDK 的最低要求是 API level 10。

        基础使用:

                

Glide.with(context)
    .load(url)
    .into(imageView);

        占位图设置:

Glide.with(context)
    .load(url)
    .placeholder(R.drawable.place_image)//图片加载出来前,显示的图片
    .error(R.drawable.error_image)//图片加载失败后,显示的图片
    .into(imageView);

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值