Android 实时监听时间变化:BroadcastReceiver 使用指南
在 Android 中,可以使用 BroadcastReceiver 来监听系统时间变化。以下代码示例演示了如何实现实时获取时间变化:
- 创建 BroadcastReceiver 类
public class TimeChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_TIME_TICK)) {
// 每分钟触发一次
Log.d('TimeChangeReceiver', 'Time tick');
} else if (intent.getAction().equals(Intent.ACTION_TIME_CHANGED)) {
// 时间被手动修改
Log.d('TimeChangeReceiver', 'Time changed');
} else if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) {
// 时区被修改
Log.d('TimeChangeReceiver', 'Timezone changed');
}
}
}
- 在 AndroidManifest.xml 中注册 BroadcastReceiver
<receiver android:name=".TimeChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.TIME_TICK" />
<action android:name="android.intent.action.TIME_CHANGED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
- 在 Activity 中启动 BroadcastReceiver
TimeChangeReceiver receiver = new TimeChangeReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_TICK);
filter.addAction(Intent.ACTION_TIME_CHANGED);
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
registerReceiver(receiver, filter);
这样就可以实时监听系统时间变化了。需要注意的是,如果不需要实时监听,可以在 Activity 的 onDestroy() 方法中注销 BroadcastReceiver,避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/jFnB 著作权归作者所有。请勿转载和采集!