文章目录
  1. 1. 优点
  2. 2. 没有LifeCycle的时候
  3. 3. 使用LifeCycle后
  4. 4. 参考地址

LifeCycle 架构设计一大利器,旨在减少Activity和Fragment中代码,简化Activity和Fragment职责,实现功能代码分离,达到解耦的目的。

官方解释:

Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. These components help you produce better-organized, and often lighter-weight code, that is easier to maintain.

译文:Lifecycle-aware 组件感知Activity和Fragment的周明周期,并能响应个生命周期状态。这个组件有助于产生更有序、更轻和更易维护的代码。

优点

LifeCycle作用主要是针对开发中遇到的一些痛点,它的优点也是基于现有的痛点,主要以下有点:

  1. 减轻acitivity和fragment的负担,实现调用方代码更加更加简洁
  2. 为封装组件提供更好的支持,达到组件独立,实现更好的内聚和更低的耦合
  3. 复用变得更加简单
  4. 实现组合优于继承的设计思想

没有LifeCycle的时候

没有LifeCycle组件的时候,我们实现一个定位功能通常会如下实现:

主程序代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* 定位功能一般实现方法
*/
public class LocationActivity extends AppCompatActivity {

private LocationListener mLocationListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
mLocationListener = new LocationListener();
}

@Override
protected void onStart() {
super.onStart();
if (mLocationListener != null) {
mLocationListener.start();
}
}

@Override
protected void onStop() {
super.onStop();
if (mLocationListener != null) {
mLocationListener.stop();
}
}
}

定位逻辑实现如下:

1
2
3
4
5
6
7
8
9
10
11
public class LocationListener {

public void start() {
Log.d("LifeCycleListener", "start");
}

public void stop() {
Log.d("LifeCycleListener", "stop");
}

}

从上面的代码,可以发现,实现一个定位,我们需要在activity和fragment处理打开定位和关闭定位。这只是一个定位,在现实开发中,我们会有统计等很多类似的功能,这样我们的activity和fragment代码会变得臃肿,且代码不易复用。

使用LifeCycle后

在我们使用LifeCycle之后,主程序如下:

1
2
3
4
5
6
7
8
9
10
public class LifeCycleActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_life_cycle);

getLifecycle().addObserver(new LocationListener());
}
}

定位逻辑如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 跟生命周期相关的监听器
* <p>
* Created by zhenguo on 12/5/17.
*/
public class LocationListener implements LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void start() {
Log.d("LifeCycleListener", "start");
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void stop() {
Log.d("LifeCycleListener", "stop");
}

@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void onAny(LifecycleOwner owner, Lifecycle.Event event) {
Log.d("LifeCycleListener", "onAny:" + event.name());
}

}

显而易见,现在调用程序只需一行代码,简化了调用方的代码,调用方不需要关心生命周期的处理逻辑,这部分逻辑转移到具体的业务实现方,实现高内聚和低耦合。

参考地址

官方地址:https://developer.android.com/topic/libraries/architecture/lifecycle.html
源码地址:https://github.com/jingle1267/AndroidArchitectureComponets


本文地址 http://94275.cn/2017/12/09/lifecycle/ 作者为 Zhenguo

author:Zhenguo
Author: Zhenguo      Blog: 94275.cn/     Email: jinzhenguo1990@gmail.com
I have almost 10 years of application development experience and have a keen interested in the latest emerging technologies. I use my spare time to turn my experience, ideas and love for IT tech into informative articles, tutorials and more in hope to help others and learn more.
文章目录
  1. 1. 优点
  2. 2. 没有LifeCycle的时候
  3. 3. 使用LifeCycle后
  4. 4. 参考地址
返回顶部