毕设博客(十四)-—— 感知生命周期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
    评论
根据你提供的代码,我看不出具体的问题。但从报错信息来看,可能是你的配置文件没有正确的格式或者缺少必要的属性。可以参考以下的示例代码,进行比对: ``` qiankun: { // 配置子应用 apps: [ { name: 'app1', // 子应用名称 entry: '//localhost:8001', // 子应用入口 URL container: '#subapp-viewport', // 子应用挂载的容器选择器或者 Element 实例 activeRule: '/app1', // 子应用的激活规则 }, ], // 全局共享的静态资源,支持 cors 地址和本地文件,会被自动注入到子应用的沙箱 // 可以是一个数组或者字符串 shared: { react: { // react 相关的资源 eager: true, singleton: true, requiredVersion: '^16.14.0', }, 'react-dom': { // react-dom 相关的资源 eager: true, singleton: true, requiredVersion: '^16.14.0', }, }, // 设置全局的微应用样式,比如字体、颜色等 // 可以是一个字符串或者函数 css: 'body { background-color: #f0f0f0; }', // 预加载子应用的沙箱环境,默认为 true,可以设置为 false,手动加载沙箱 prefetch: true, // 是否开启沙箱,建议开启,保证微应用之间的隔离性和安全性 sandbox: true, // 设置微应用的生命周期钩子 lifeCycles: { // 微应用启动之前执行的方法 beforeLoad: async (app) => { console.log('before load app %c%s', 'color: green;', app.name); }, // 微应用启动之后执行的方法 afterMount: async (app) => { console.log('after mount app %c%s', 'color: green;', app.name); }, // 微应用卸载之后执行的方法 beforeUnmount: async (app) => { console.log('before unmount app %c%s', 'color: green;', app.name); }, }, }, ``` 如果还有问题,可以提供更详细的信息,让我更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值