728x90
반응형
1. Lifecycles
Lifecycles는 라이브러리 이름 답게 생명주기 모니터링을 돕습니다.
크게 2가지로 구성되어 있습니다.
(1) Lifecycle Owner
- Activity, Fragment에서 생명주기를 분리하여 Lifecycle 객체에 담습니다.
Lifecycle 객체를 통해 다른 곳에서 해당 화면의 생명주기를 모니터링 할 수 있습니다.
자신의 생명주기를 담은 Lifecycle 객체가 Lifecycle Owner 입니다.
(2) Lifecycle Observer
- 생명주기를 Wrapping한 Lifecycle Owner 객체를 통해 화면 밖에서도 모니터링이 가능하지만,
생명주기에 따른 동작은 여전히 화면에서만 정의할 수 있습니다.
화면 밖에서도 생명주기에 따른 동작을 정의하기 위해서는
원하는 클래스에 LifecycleObserver 인터페이스를 구현하고,
넘겨받은 Lifecycle Owner 객체에 구현한 LifecycleObserver를 등록해야 합니다.
LifecycleObserver를 구현한 클래스는 onResume() 등의 생명주기 메소드를 정의할 수 있습니다.
이 메소드들은 등록한 Lifecycle Owner가 해당 생명주기 상태가 되면
자동으로 수행되면서, 객체가 화면과 동일한 생명주기를 가진 것처럼 행동하도록 합니다.
public class Lifecycle_act_01 extends LifecycleActivity implements mCallback {
private MyLocationListener2 myLocationListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// getLifecycle()로 생명주기가 담긴 Lifecycle 객체를 받는다.
myLocationListener = new MyLocationListener2(this, getLifecycle(), this);
}
@Override
public void callBack() {
}
/*
* (1) Lifecycle Owner
Activity, Fragment에서 생명주기를 분리하여 Lifecycle 객체에 담습니다.
Lifecycle 객체를 통해 다른 곳에서 해당 화면의 생명주기를 모니터링 할 수 있습니다.
자신의 생명주기를 담은 Lifecycle 객체가 Lifecycle Owner 입니다.
* */
class MyLocationListener2 {
private boolean enabled = false;
private Lifecycle lifecycle;
public MyLocationListener2(Context context, Lifecycle lifecycle, mCallback callback) {
}
public void enable() {
enabled = true;
// Lifecycle.getCurrentState()로 생명주기 모니터링이 가능하다.
if (lifecycle.getCurrentState().isAtLeast(STARTED)) {
// connect if not connected
}
}
}
}
728x90
반응형
'Android AAC' 카테고리의 다른 글
DATA_Binding : Fragment (0) | 2022.03.10 |
---|---|
MVVM LiveData (1) (0) | 2021.02.22 |
Android AAC : LiveData (0) | 2021.01.07 |
Android ACC : Data Binding (0) | 2021.01.06 |
Android AAC 란? (0) | 2021.01.06 |