Android 공부/Android AAC

Android ACC : Lifecycles

Machine_웅 2021. 1. 6. 10:41
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 공부 > 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