我有一个显示倒计时的小部件。为此,我使用了类CountDownTimer,但问题是倒计时经常停止!我想是因为android会自动停止线程,因为很多时候都会倒计时。HOw可以解决这个问题吗?谢谢
public class TempoIndietro extends CountDownTimer{
AppWidgetManager manager;
ComponentName thisWidget;
public TempoIndietro(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
thisWidget = new ComponentName(context, widget.class);
manager = AppWidgetManager.getInstance(context);
remoteView = new RemoteViews(context.getPackageName(),R.layout.widgett);
}
@Override
public void onFinish() {
remoteView.setTextViewText(R.id.textView2, context.getResources().getString(R.string.onair_widget_countdown));
manager.updateAppWidget(thisWidget, remoteView);
}
@Override
public void onTick(long millisUntilFinished) {
SimpleTimeFormat tf = new SimpleTimeFormat("$dd$ : $HH$: $mm$: $ss$");
String risultato = tf.format(millisUntilFinished); // arg0 tempo
remoteView.setTextViewText(R.id.textView2, risultato);
manager.updateAppWidget(thisWidget, remoteView);
};
}发布于 2012-04-20 06:24:16
记住计时器的开始时间,并计算与该时间的差值。
为此,您可以使用本地存储。
最好在活动中的onStop()和onResume()中调用它。
保存:
SharedPreferences settings = getSharedPreferences("myappname", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putLong("varname", startDate.getTime());
editor.commit();检索:
SharedPreferences settings = getSharedPreferences("myappname", 0);
Long millis = settings.getLong("varname", null);
Date startDate = new Date(millis);https://stackoverflow.com/questions/10236771
复制相似问题