Jetpack架构组件(二)Lifecycle使用
2024-09-01 20:59:43
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
最新文章
- 光驱SSD安装Win7+ubuntu系统双系统
- Xenocode Postbuild 2010 for .NET 使用说明
- java实现excel模板导出
- CSS:布局的三个关键属性:float、position、display
- 元素ID命名规范
- js面向过程改写成面向对象--通用方法
- Krypton Factor 困难的串-Uva 129(回溯)
- 自制USB wifi信号放大天线
- Sonar入门(五):使用 Sonar 进行代码质量管理
- JS 三目运算符和RETURN
- Dynamics 365-N:N Relationship的记录处理
- 京东Alpha平台开发笔记系列(二)
- 使用select的str_cli函数的实现
- bzoj1030【JSOI2007】文本生成器
- python自学第7天,函数,参数
- windows7 64位安装tensorflow 1.4.0 CPU版本
- SpringBoot返回json格式到浏览器上,出现乱码问题
- gtftools软件简单介绍(我自己不建议用,因为我发现不好用)
- T-SQL判断是否存在表、临时表
- thikphp 简单的接口骨架
热门文章
- 程序员的算法课(17)-常用的图算法:深度优先(DFS)
- SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
- 简单实现TodoList
- VLAN实验5(在ensp上利用三层交换机实现VLAN间路由)
- element table 先显示暂无数据 之后再加载数据 问题
- 《Windows内核安全与驱动开发》4.1 文件操作
- STM32F4 阿波罗寄存器点亮LED灯
- docker的安装及常用命令
- MySQL必知必会(Select, Order by子句)
- python数据挖掘第一篇:正则表达式