GitHub标星4,Android架构师成长路线

本文介绍了Android架构师的成长路径,重点讲解了MVVM架构的实践,包括配置config.gradle和AndroidManifest,创建Activity和ViewModel,以及数据绑定。在数据绑定中,详细阐述了传统绑定、自定义绑定和图片加载。此外,还涵盖了网络请求的使用,如Retrofit、Okhttp和RxJava的结合,以及网络拦截器、Cookie管理和异常处理。最后提到了事件总线RxBus和Messenger作为组件间通信的工具。
摘要由CSDN通过智能技术生成

下载例子程序,在主项目app的build.gradle中依赖例子程序中的mvvmhabit


dependencies {  

    ...

    implementation project(':mvvmhabit')

} 

1.3、配置config.gradle

如果不是远程依赖,而是下载的例子程序,那么还需要将例子程序中的config.gradle放入你的主项目根目录中,然后在根目录build.gradle的第一行加入:


apply from: "config.gradle" 

注意: config.gradle中的

android = [] 是你的开发相关版本配置,可自行修改

support = [] 是你的support相关配置,可自行修改

dependencies = [] 是依赖第三方库的配置,可以加新库,但不要去修改原有第三方库的版本号,不然可能会编译不过

1.4、配置AndroidManifest

添加权限:


<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

配置Application:

继承mvvmhabit中的BaseApplication,或者调用


BaseApplication.setApplication(this); 

来初始化你的Application

可以在你的自己AppApplication中配置


//是否开启日志打印

KLog.init(true);

//配置全局异常崩溃操作

CaocConfig.Builder.create()

    .backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) //背景模式,开启沉浸式

    .enabled(true) //是否启动全局异常捕获

    .showErrorDetails(true) //是否显示错误详细信息

    .showRestartButton(true) //是否显示重启按钮

    .trackActivities(true) //是否跟踪Activity

    .minTimeBetweenCrashesMs(2000) //崩溃的间隔时间(毫秒)

    .errorDrawable(R.mipmap.ic_launcher) //错误图标

    .restartActivity(LoginActivity.class) //重新启动后的activity

    //.errorActivity(YourCustomErrorActivity.class) //崩溃后的错误activity

    //.eventListener(new YourCustomEventListener()) //崩溃后的错误监听

    .apply(); 

2、快速上手


2.1、第一个Activity

以大家都熟悉的登录操作为例:三个文件LoginActivty.javaLoginViewModel.javaactivity_login.xml

2.1.1、关联ViewModel

在activity_login.xml中关联LoginViewModel。


<layout>

    <data>

        <variable

            type="com.goldze.mvvmhabit.ui.login.LoginViewModel"

            name="viewModel"

        />

    </data>

    .....



</layout> 

variable - type:类的全路径

variable - name:变量名

2.1.2、继承BaseActivity

LoginActivity继承BaseActivity


public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginViewModel> {

    //ActivityLoginBinding类是databinding框架自定生成的,对activity_login.xml

    @Override

    public int initContentView(Bundle savedInstanceState) {

        return R.layout.activity_login;

    }



    @Override

    public int initVariableId() {

        return BR.viewModel;

    }



    @Override

    public LoginViewModel initViewModel() {

        //View持有ViewModel的引用,如果没有特殊业务处理,这个方法可以不重写

        return ViewModelProviders.of(this).get(LoginViewModel.class);

    }

} 

保存activity_login.xml后databinding会生成一个ActivityLoginBinding类。(如果没有生成,试着点击Build->Clean Project)

BaseActivity是一个抽象类,有两个泛型参数,一个是ViewDataBinding,另一个是BaseViewModel,上面的ActivityLoginBinding则是继承的ViewDataBinding作为第一个泛型约束,LoginViewModel继承BaseViewModel作为第二个泛型约束。

重写BaseActivity的二个抽象方法

initContentView() 返回界面layout的id

initVariableId() 返回变量的id,对应activity_login中name=“viewModel”,就像一个控件的id,可以使用R.id.xxx,这里的BR跟R文件一样,由系统生成,使用BR.xxx找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值