设为首页 加入收藏

TOP

Jetpack架构组件(二)Lifecycle使用(一)
2019-10-09 19:56:39 】 浏览:55
Tags:Jetpack 架构 组件 Lifecycle 使用

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

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

添加这一句代码就依赖了如下的库。
eXj6eJ.png

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的多个生命周期方法中调用MyPresent

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇带你了解Android Jetpack 下一篇Android开发模版代码(4)——状态..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目