Mel*_*Mel 8 user-interface android clock
我的问题类似于这个,如何每分钟更新一个小部件,但我只想更新UI的TextView.我需要访问时间,所以不幸的是不能简单地使用DigitalClock视图.
我一直在研究,并找到了每分钟更新的方法,但不是一分钟,所以它们与系统时钟同步(所以它们可能会在59秒内不同步!)
我能想到的唯一方法是(a)每秒运行一个处理程序(或计时器)(如果我只想每分钟更新,这看起来有点像矫枉过正)这样来自android.com资源
(b)在后台运行服务.(我并不热衷于此,因为我已经在后台运行了更重要的事情)
(c)使用警报管理器(再次看起来像是矫枉过正)
似乎是一件容易的事,但......
任何建议赞赏梅尔
Ale*_*lex 40
接受的答案没有特别回答这个问题.OP要求按时接收某种事件的方式(在系统时钟分钟和00秒).
使用Timer不是正确的方法.这不仅是矫枉过正,而且你必须采取一些技巧才能做到正确.
正确的方法(即更新显示时间为HH:mm的TextView)是使用BroadcastReceiver,如下所示:
BroadcastReceiver _broadcastReceiver;
private final SimpleDateFormat _sdfWatchTime = new SimpleDateFormat("HH:mm");
private TextView _tvTime;
@Override
public void onStart() {
super.onStart();
_broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent intent) {
if (intent.getAction().compareTo(Intent.ACTION_TIME_TICK) == 0)
_tvTime.setText(_sdfWatchTime.format(new Date()));
}
};
registerReceiver(_broadcastReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
}
@Override
public void onStop() {
super.onStop();
if (_broadcastReceiver != null)
unregisterReceiver(_broadcastReceiver);
}
Run Code Online (Sandbox Code Playgroud)
系统将根据系统时钟在每分钟的确切开始时发送此广播事件.不要忘记事先初始化TextView(到当前系统时间),因为很可能你会在一分钟内弹出你的UI,并且TextView在下一分钟发生之前不会更新.
归档时间: |
|
查看次数: |
10768 次 |
最近记录: |