通过LifecycleObserver实现自动计数,退出后台时停止计数,再次返回前台时从上次位置开始计数
1 .自定义控件并实现生命周期观察器
import android.content.Context;
import android.os.SystemClock;
import Android.util.attributes et;
import Android.widget.chronometer;
importandroidx.life cycle.life cycle;
importandroidx.life cycle.life cycle observer;
importandroidx.life cycle.onlifecycleevent;
//*
* Chronometer可以实现自动计数
*/
publicclassmychronometerextendschronometerimplementslifecycleobserver {
private static long lastTime;
publicmychronometer (上下文上下文,AttributeSet attrs ) {
super (上下文,attrs );
}
侦听Activity onPause事件
@ onlifecycleevent (life cycle.event.on _ pause )//LifecycleObserver特定的写法
私有语音密码元数据
last time=system clock.elapsed real time (-get base );
停止(;
}
侦听Activity onResume事件
@ onlifecycleevent (life cycle.event.on _ resume ) )。
private void resumeMeter
set base (system clock.elapsed real time ) )- lastTime;
start (;
}
}
正在布局
Android : id=' @ id/chronometer '
安卓: layout _ width=' wrap _ content '
安卓: layout _ height=' wrap _ content '
安卓: text=' hello world!'
安卓:文本大小=' 30sp '
app : layout _ constraint bottom _ tobottomof=' parent '
app : layout _ constraint left _ toleftof=' parent '
app : layout _ constraint right _ torightof=' parent '
app : layout _ constraint top _ toto POF=' parent ' /
2 .在activity中将控件设置为activity生命周期观察者
importandroidx.app compat.app.appcompatactivity;
import android.os.Bundle;
publicclassmainactivityextendsappcompatactivity {
MyChronometer chronometer;
@Override
保护性视频创建(bundlesavedinstancestate )。
super.oncreate (savedinstancestate;
setcontentview (r.layout.activity _ main;
chronometer=findviewbyid (r.id.chronometer;
添加chronometer作为观察者
getLifecycle ().addobserver ) chronometer;
}
}