Android最新框架整理

现在新技术层出不穷,我打算花费1个月时间整理Android最新常用技术栈及使用

,希望小伙伴们咱们一起进步

1、Arouter

这个是阿里最新的框架,其实现的目的页面、组件之间的跳转,代替了传统的intent等方式跳转,话不多说,直接上使用步骤

1)在module的build.gradle里面添加包引用

defaultConfig {
    javaCompileOptions {
        annotationProcessorOptions {
            //注解处理器需要的模块名,作为路径映射的前缀
            arguments = [AROUTER_MODULE_NAME: project.getName()]
        }
    }
}
implementation 'com.alibaba:arouter-api:1.4.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2' //注解处理器,会将注解编译成Java类

2)在Application里面初始化路由,Router.init(this);

3)新建2个页面,Activitya,Activityb,由Activitya跳转到Activityb,并传值id="123";

Activitya里面点击事件添加如下代码

ARouter.getInstance().build("/test/demo").withString("id":"123").navigation();

Activityb添加如下注解

@Route(path = "/test/demo")
public class Activitybextends AppCompatActivity {
  
  

@autowared(name="id")String id;//接收过来的值

}

2、LiveData

大部分Android应用会从网络或SQLite数据库存取数据,并根据数据更新界面。为了避免ANR,主线程中不能存取数据。而后台线程中无法更新界面。通常的做法是让后台线程将数据通过Handler传递给主线程。但是当界面较为复杂时,使用Handler这种方式变得非常复杂。为了简化界面更新的工作,Google在Jetpack中提供了LiveData组件。LiveData具有保证UI和状态一致、避免内存泄漏、避免手动管理生命周期等优点。

LiveData里面有2个赋值方法,一个是putValue(T value),另外一个是setValue(T value),主要区别前者可以在主线程和子线程赋值,后者在主线程赋值。

说下怎么使用,

一般情况下会自定义一个类,用来继承MutableLiveData(PS:为什么不用LiveData,主要原因是LiveData里面putValue方法是protected,外部不能访问,但是MutableLiveData是LiveData子类,重写了putValue(T value),其用public修饰,外部可以进行访问),重写onActive和onInactive方法,说下他们在activiy生命周期中什么时候开始执行,话不多说,如下图所示:

 通过上面的图可以知道,
onActive方法在onStart之后和onResume之前执行,
onInactive方法在onPause之后和onStop之前执行。

@Override
protected void onActive() {
    Log.e("MyLiveData:","call the onActive()");
    super.onActive();
}

@Override
protected void onInactive() {
    Log.e("MyLiveData:","call the onInActive()");
    super.onInactive();
}

LiveData一般需要observe通过观察者模式进行注册,当被观察者对象发生变化时,观察者也会随之变化。需要参数如下图所示,其中LifeCycleOwner可以用Activity/fragment引用,因为api26以后他们都会继承于LifecycleOwner。等会讲解ViewModel时,我这边会详细讲解observe使用

3、ViewModel

类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。下面来介绍下使用方法

 自定义MyViewModel然后继承ViewModel,重写onCleared()方法,如下图所示:

上图中有2个自定义方法,getLiveData方法是为了创建LiveData对象,change方法主要作用是当被观察者对象发生变化的时候,会触发该方法,然后进行赋值,onCleared方法触发的条件是activity生命周期处于onStop之后会触发该方法。说这么多,ViewModel和liveData如何结合使用呢,创建2个fragment,分别为FragmentA和FragmentB,通过观察B,如果发生变化,通知A,如下图所示:

首先A和B都 new ViewModelProvider(getActivity()).get(MyViewModel.class);获取MyViewModel对象,当fragmentB里面textView进行点击时,通知A,B有变化了,然后A要发生变化。

好了,ARouter和LiveData和ViewModel到此告一段落

猜你喜欢

转载自blog.csdn.net/guochengabcd/article/details/120148658
今日推荐