2012-04-19 116 views
0

我有一个显示倒计时的小部件。为了做到这一点,我使用CountDownTimer类,但问题是倒计时经常停止!我认为,因为android自动停止线程,因为在很多houres期间countdownc。你可以解决这个问题吗?谢谢Android stop CountDown

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); 
      }; 
     } 
+0

怎么是你应该来帮助你看到你的代码 – slayton 2012-04-19 21:09:26

+0

我有加入倒数代码到答案 – MimmoG 2012-04-19 22:10:35

+0

当onTick()执行的呢?换句话说,何时更新小部件?在每一分钟? – San 2012-04-19 22:53:24

回答

0

请记住您的计时器的开始时间,并计算与此时间的差异。

您可以使用本地存储。

最好在Activity的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); 
+0

这是一个小部件的问题是,这个倒计时可以在很多小时或几天和android杀死倒计时线程.... – MimmoG 2012-04-20 03:16:54