我的 Android 应用程序TextView告诉用户数据年龄(“13 分钟前”)。我目前每秒更新一次,使用 aRunnable来捕捉当分钟更改notifyDataSetChanged()为我的适配器时。但这会导致每秒垃圾收集...
TextView当系统时钟每分钟发生变化时,是否有另一种方法来触发更新(或采取一般措施),而无需每秒检查此类变化?
由于您已经设置了 Runnable 和回调,因此使用 modulo 计算下一次更新应该发生的时间:
handler.postDelayed(runnable,
DateUtils.MINUTE_IN_MILLIS - System.currentTimeMillis % DateUtils.MINUTE_IN_MILLIS);
Run Code Online (Sandbox Code Playgroud)
这将在下一分钟发生时运行回调,无论是 59、30 还是 1 秒。请注意,如果 Runnable 只更新一个 TextView,不要忘记DateUtils.HOUR_IN_MILLIS在事件发生一小时时切换到,每分钟更新“1 小时前”是没有意义的。
您可能会发现类似的方法DateUtils.getRelativeTimeSpanString()可用于创建“x 分钟前”字符串。