Android Architecture Components使用介绍

Posted 智多星张晓锋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Architecture Components使用介绍相关的知识,希望对你有一定的参考价值。

  Android Architecture Components是google针对android新推出的组件,意在解决Android 组件的生命周期和数据的读取问题。下面从使用到原理,由浅入深的介绍各个模块的使用。

使用
1,Lifecycle。假设我们现在有一个需求,监听当前位置,于是我们写了一个MyLocationListener这个类用来监听位置的变化。但是在Activity的生命周期发生变化的时候,我们需要做相应的处理。例如,在Activity的暂停状态我们是不用继续获取当前的位置的。所以我们一般在这个时候会同样做一个暂停获取位置的操作。为了与Activity的生命周期同步,我们写的这个MyLocationListener这个类实现LifecycleObserver这个接口。

package com.nanguiyu.androidarchitecturetest;

import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleObserver;
import android.arch.lifecycle.OnLifecycleEvent;
import android.util.Log;


public class MyLocationListener implements LifecycleObserver 

    private static String TAG = "MyLocationListener";

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void start()
        Log.d(TAG,"start");
    

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void onResume()
        Log.d(TAG,"onResume");
    

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void stop()
        Log.d(TAG,"stop");
    

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void onPause()
        Log.d(TAG,"onPause");
    

然后我们在主Activity中添加注册的方法getLifecycle().addObserver(myLocationListener);
同样如果我们不需要监听Activity的状态了。我们可以在Activity的onDestory方法中去掉监听器getLifecycle().removeObserver(myLocationListener);
下面的代码是MainActivity的全部内容。

package com.nanguiyu.androidarchitecturetest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

    private MyLocationListener myLocationListener;

    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.dialog_button);
        button.setOnClickListener(this);
        myLocationListener = new MyLocationListener();
        getLifecycle().addObserver(myLocationListener);
    


    @Override
    protected void onDestroy() 
        super.onDestroy();
        getLifecycle().removeObserver(myLocationListener);
    

    @Override
    public void onClick(View v) 
        Intent intent = new Intent(this,DialogActivity.class);
        startActivity(intent);

    

我们特地在MainActivity中加入了一个Dialog样式的Activity,我们知道启动这个Activity之后。主Activity会进入onPause状态。对应的打印状态如下图,刚进入时打印:

12-25 19:57:10.729 6543-6543/com.nanguiyu.androidarchitecturetest D/MyLocationListener: start
12-25 19:57:10.732 6543-6543/com.nanguiyu.androidarchitecturetest D/MyLocationListener: onResume

当弹出Dialog的时候:

12-25 20:00:54.487 6543-6543/com.nanguiyu.androidarchitecturetest D/MyLocationListener: onPause

当去掉Dialog的时候

12-25 20:01:53.303 6543-6543/com.nanguiyu.androidarchitecturetest D/MyLocationListener: onResume

当按下Home按键的时候

12-25 20:02:42.079 6543-6543/com.nanguiyu.androidarchitecturetest D/MyLocationListener: onPause
12-25 20:02:42.511 6543-6543/com.nanguiyu.androidarchitecturetest D/MyLocationListener: stop

通过上面的实例分析,实现LifecycleObserver的MyLocationListener完全监听到了整个Activity的生命周期。
实例源代码请查看:

https://github.com/zf617525633/AndroidArchitectureTest

以上是关于Android Architecture Components使用介绍的主要内容,如果未能解决你的问题,请参考以下文章

Android-architecture之MVCMVPMVVMData-Binding

如何评价Google IO 17发布Android Architecture Components

Android Clean Architecture中的登录流程

Android System Architecture

Android Architecture Components--项目实战

Android Architecture Components使用介绍