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的生命周期。
实例源代码请查看:
以上是关于Android Architecture Components使用介绍的主要内容,如果未能解决你的问题,请参考以下文章
Android-architecture之MVCMVPMVVMData-Binding
如何评价Google IO 17发布Android Architecture Components
Android Clean Architecture中的登录流程