美文网首页
LifecycleObserver监听Activity生命周期

LifecycleObserver监听Activity生命周期

作者: GaoXiaoGao | 来源:发表于2021-01-12 10:15 被阅读0次

    通过LifecycleObserver实现自动计数,退出到后台时,停止计数,当再次回到前台时从上次位置开始计数

    1.自定义控件并实现LifecycleObserver

    import android.content.Context;
    import android.os.SystemClock;
    import android.util.AttributeSet;
    import android.widget.Chronometer;
    import androidx.lifecycle.Lifecycle;
    import androidx.lifecycle.LifecycleObserver;
    import androidx.lifecycle.OnLifecycleEvent;
    
    /**
     * Chronometer 可以实现自动计数
     */
    public class MyChronometer extends Chronometer implements LifecycleObserver {
    
        private static long lastTime;
        public MyChronometer(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        //监听Activity onPause事件
        @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) //LifecycleObserver特有的写法
        private void pauseMeter(){
            lastTime = SystemClock.elapsedRealtime() - getBase();
            stop();
        }
    
        //监听Activity onResume事件
        @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
        private void resumeMeter(){
            setBase(SystemClock.elapsedRealtime()- lastTime);
            start();
        }
    }
    

    布局中

     <com.gao.lifecycle.MyChronometer
            android:id="@+id/chronometer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:textSize="30sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    

    2.在Activity中将控件设置为Activity的生命周期观察者

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        MyChronometer chronometer;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            chronometer = findViewById(R.id.chronometer);
            //添加chronometer为观察者
            getLifecycle().addObserver(chronometer);
        }
    }
    

    相关文章

      网友评论

          本文标题:LifecycleObserver监听Activity生命周期

          本文链接:https://www.haomeiwen.com/subject/xvizoktx.html