码迷,mamicode.com
首页 > 其他好文 > 详细

Jetpack架构组件(二)Lifecycle使用

时间:2019-10-02 18:37:37      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:main   event   present   appcompat   nbsp   href   observer   amp   对象   

1.直接添加如下依赖就可以满足日常的工作,如果缺少哪个库,再去单独添加就好了

implementation "android.arch.lifecycle:extensions:1.1.1"

添加这一句代码就依赖了如下的库。
技术图片

2.先不谈Activity和Fragment中如何使用,先举一个Lifecycle的简单例子。

 1 ackage com.example.lifecycledemo1;
 2 
 3 import android.arch.lifecycle.Lifecycle;
 4 import android.arch.lifecycle.LifecycleObserver;
 5 import android.arch.lifecycle.OnLifecycleEvent;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.os.Bundle;
 8 import android.util.Log;
 9 
10 public class MainActivity extends AppCompatActivity {
11 
12     private static final String TAG = "MainActivity";
13 
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18         getLifecycle().addObserver(new MyObserver());//1
19     }
20 
21     public class MyObserver implements LifecycleObserver{
22 
23         @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
24         void onResume(){
25             Log.d(TAG, "Lifecycle call onResume");
26         }
27         @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
28         void onPause(){
29             Log.d(TAG, "Lifecycle call onPause");
30         }
31     }
32 
33     @Override
34     protected void onResume() {
35         super.onResume();
36         Log.d(TAG, "onResume");
37     }
38 
39     @Override
40     protected void onPause() {
41         super.onPause();
42         Log.d(TAG, "onPause");
43 
44     }
45 }

先实现MyObserver,对ON_CREATE和ON_RESUME事件进行监听。因为在Android Support Library 26.1.0 及其之后的版本,Activity和Fragment已经默认实现了LifecycleOwner接口,所以在注释1处可以直接使用getLifecycle方法获取Lifecycle对象,这样MyObserver就可以观察MainActivity的生命周期变化了,LifecycleOwner可以理解为被观察者,MainActivity默认实现了LifecycleOwner接口,也就是说MainActivity是被观察者。
运行程序,打印的log如下所示。

D/MainActivity: onResume
D/MainActivity: Lifecycle call onResume
D/MainActivity: Lifecycle call onPause
D/MainActivity: onPause

3.MVP的例子

 1 public class MyPresenter implements IPresenter {
 2     private static final String TAG = "test";
 3 
 4     @Override
 5     public void onResume() {
 6         Log.d(TAG, "Lifecycle call onResume");
 7     }
 8 
 9     @Override
10     public void onPause() {
11         Log.d(TAG, "Lifecycle call onPause");
12     }
13 }
14 
15 interface IPresenter extends LifecycleObserver {
16 
17     @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
18     void onResume();
19 
20     @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
21     void onPause();
22 }

IPresenter接口继承自LifecycleObserver接口,MyPresenter又实现了IPresenter接口,这样MyPresenter成为了一个观察者。
接在在MainActivity中加入MyPresenter:

 1 public class MainActivity extends AppCompatActivity {
 2 
 3     private static final String TAG = "test";
 4     private IPresenter mPresenter;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         mPresenter = new MyPresenter();
10         getLifecycle().addObserver(mPresenter);
11     }
12 
13     @Override
14     protected void onResume() {
15         super.onResume();
16         Log.d(TAG, "onResume");
17     }
18 
19     @Override
20     protected void onPause() {
21         super.onPause();
22         Log.d(TAG, "onPause");
23 
24     }
25 }

MainActivity成为了被观察者,当它的生命周期发生变化时,MyPresenter就可以观察到,这样就不需要在MainActivity的多个生命周期方法中调用MyPresenter的方法了。
打印的日志如下:

D/test: onResume
D/test: Lifecycle call onResume
D/test: Lifecycle call onPause
D/test: onPause

  

 

  

Jetpack架构组件(二)Lifecycle使用

标签:main   event   present   appcompat   nbsp   href   observer   amp   对象   

原文地址:https://www.cnblogs.com/ganchuanpu/p/11617740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!