JetPack(三)LifeCycles


LifeCycles

生命周期感知组件执行响应另一个组件生命周期状态变化的操作,例如活动和片段。这些组件可以帮助您生成更易于维护的组织良好的、轻量级的代码。

用法很简单

只需要实现LifecycleObserver,下面以一个计时器为例,当活动暂停的时候计时器暂停,当活动恢复的时候计时器恢复

public class MyChronometer extends Chronometer implements LifecycleObserver {

    private  long realTime;
    public MyChronometer(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
//暂停
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    private void pauseMeter(){
          realTime = SystemClock.elapsedRealtime() - getBase();
          stop();
    }
//恢复
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    private void startMeter(){
        setBase(SystemClock.elapsedRealtime()-realTime);
        start();
    }
}

在activity中添加观察者

        mChronometer = findViewById(R.id.chronometer);
        getLifecycle().addObserver(mChronometer);