2012-04-19 5 views
0

카운트 다운을 표시하는 위젯이 있습니다. 이렇게하려면 CountDownTimer 클래스를 사용하지만 문제는 카운트 다운이 자주 중지된다는 것입니다! 나는 많은 houres 동안 countdownc 때문에 스레드가 자동으로 스레드를 중지하기 때문에 안드로이드가 생각합니다. 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); 
      }; 
     } 
+0

어떻게 내가 onTick()을 실행 할 때 대답 – slayton

+0

을보고 당신을 도울 예정입니까? 또는 다른 말로하면 위젯을 업데이트합니까? 매분마다? – MimmoG

+0

에 카운트 다운 코드를 추가해야 코드 – San

답변

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

위젯은이 카운트 다운이 수 시간 또는 며칠 동안 수 있으며, 안드로이드가 카운트 다운 스레드를 죽일 수 있다는 문제입니다 .... – MimmoG