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

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

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

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

 ackage com.example.lifecycledemo1;

 import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleObserver;
import android.arch.lifecycle.OnLifecycleEvent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLifecycle().addObserver(new MyObserver());//
} public class MyObserver implements LifecycleObserver{ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume(){
Log.d(TAG, "Lifecycle call onResume");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
void onPause(){
Log.d(TAG, "Lifecycle call onPause");
}
} @Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
} @Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause"); }
}

先实现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的例子

 public class MyPresenter implements IPresenter {
private static final String TAG = "test"; @Override
public void onResume() {
Log.d(TAG, "Lifecycle call onResume");
} @Override
public void onPause() {
Log.d(TAG, "Lifecycle call onPause");
}
} interface IPresenter extends LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume(); @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
void onPause();
}

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

 public class MainActivity extends AppCompatActivity {

     private static final String TAG = "test";
private IPresenter mPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPresenter = new MyPresenter();
getLifecycle().addObserver(mPresenter);
} @Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
} @Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause"); }
}

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

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

  

  

最新文章

  1. 光驱SSD安装Win7+ubuntu系统双系统
  2. Xenocode Postbuild 2010 for .NET 使用说明
  3. java实现excel模板导出
  4. CSS:布局的三个关键属性:float、position、display
  5. 元素ID命名规范
  6. js面向过程改写成面向对象--通用方法
  7. Krypton Factor 困难的串-Uva 129(回溯)
  8. 自制USB wifi信号放大天线
  9. Sonar入门(五):使用 Sonar 进行代码质量管理
  10. JS 三目运算符和RETURN
  11. Dynamics 365-N:N Relationship的记录处理
  12. 京东Alpha平台开发笔记系列(二)
  13. 使用select的str_cli函数的实现
  14. bzoj1030【JSOI2007】文本生成器
  15. python自学第7天,函数,参数
  16. windows7 64位安装tensorflow 1.4.0 CPU版本
  17. SpringBoot返回json格式到浏览器上,出现乱码问题
  18. gtftools软件简单介绍(我自己不建议用,因为我发现不好用)
  19. T-SQL判断是否存在表、临时表
  20. thikphp 简单的接口骨架

热门文章

  1. 程序员的算法课(17)-常用的图算法:深度优先(DFS)
  2. SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  3. 简单实现TodoList
  4. VLAN实验5(在ensp上利用三层交换机实现VLAN间路由)
  5. element table 先显示暂无数据 之后再加载数据 问题
  6. 《Windows内核安全与驱动开发》4.1 文件操作
  7. STM32F4 阿波罗寄存器点亮LED灯
  8. docker的安装及常用命令
  9. MySQL必知必会(Select, Order by子句)
  10. python数据挖掘第一篇:正则表达式