在 Android 中,可以使用 BroadcastReceiver 来监听系统时间变化。以下代码示例演示了如何实现实时获取时间变化:

  1. 创建 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');
        }
    }
}
  1. 在 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>
  1. 在 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,避免内存泄漏。

Android 实时监听时间变化:BroadcastReceiver 使用指南

原文地址: https://www.cveoy.top/t/topic/jFnB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录