我倒計時倒計時到特定日期。每個記號(時間間隔1秒)都會更新一個文本框,並留下剩餘天數/小時/分鐘的時間。我的問題是,會議紀要(不知道日期/小時數)一直在閃爍。意思是說,18分17分,18分17分,然後17分16分,然後繼續這樣做。Android倒計時不能正常工作,數字在2個值之間閃爍並且時區不工作
閃爍問題解決了,現在它只是不工作的時區。 (使用來自Pshemo的代碼解決閃爍問題)
此外TimeZone似乎不工作。它顯示2小時到很多。已嘗試使用SimpleTimeZone更改它,但它不起作用,仍顯示+2小時(不管SimpleTimeZone上的設置如何)
可能是什麼原因?
倒計時代碼:
new CountDownTimer(remaining, 1000) {
TextView tv = (TextView)getActivity().findViewById(R.id.introTimeLeft);
public void onTick(long millisUntilFinished) {
SimpleTimeZone ts = new SimpleTimeZone(2, "Middle Europe");
Calendar cal = Calendar.getInstance(ts);
cal.set(2012, 5, 28, 17, 0);
long endTime = cal.getTimeInMillis();
long currentTime = System.currentTimeMillis();
long remaining = endTime - currentTime;
tv.setText(getDurationBreakdown(remaining));
}
...
}.start();
public String getDurationBreakdown(long millis)
{
if(millis < 0)
{
throw new IllegalArgumentException("Duration must be greater than zero!");
}
long days = TimeUnit.MILLISECONDS.toDays(millis);
millis -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(millis);
millis -= TimeUnit.HOURS.toMillis(hours);
long minutes = (long) Math.ceil(TimeUnit.MILLISECONDS.toMinutes(millis));
StringBuilder sb = new StringBuilder(64);
sb.append(days);
sb.append(" Days ");
sb.append(hours);
sb.append(" Hours ");
sb.append(minutes);
sb.append(" Minutes");
return(sb.toString());
}
這解決了閃爍問題。只讀一次endTime。時區問題仍然存在。 – Patrick
@Patrick我沒有與時區工作,但設法谷歌這樣的[這個](http://tutorials.jenkov.com/java-date-time/java-util-timezone.html) - >也許「轉換時區之間「會有所幫助。 – Pshemo