毕设博客(十四)-—— 感知生命周期Lifecycles

让自己创建的对象,去观察activity的生命周期,本事例是一个计数器。

创建一个新项目之后,先创建一个类MyChronometer,引入变量elapsedTime。

 

public class MyChronometer extends Chronometer implements LifecycleObserver {
    private long elapsedTime;
    public MyChronometer(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    private void pauseMeter(){
        elapsedTime = SystemClock.elapsedRealtime() - getBase();
        stop();
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    private void resumeMeter(){
        setBase(SystemClock.elapsedRealtime() - elapsedTime);
        start();
    }
}

Tips:

System.currentTimeMillis() UNIX时间 1970 1-1 0:00到现在经过的毫秒数 SystemClock.elapsedRealtime() 手机从上一次启动到现在所经过的毫秒数

将activity_main里的TextView改为MyChronometer,则UI页面就会出现如下的样子,分号前面代表“分”,分号后面代表“秒”。

另外,还要添加一个id,但是在添加id的时候要注意, 要将id添加到MyChronometer里面。之前我就将id不小心添加到了ConstraintLayout中,导致最后运行时闪退。

在MainActivity中创建变量 Chronometer:

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.meter);
        getLifecycle().addObserver(chronometer );
    }

}

不能忘记依然要添加依赖:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

最终运行结果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值