毎日指定された時間にウィジェットを更新する必要があります。次回の更新は 24 時間以内に行う必要があります。私は使用updatePeriodMillis
しましたが、ユーザーによって動作が異なりました。そこで、堅牢なソリューションを実装することにしました。私はこれを見つけて、次のように CountDownTimer を実装しました:
public class RepeatService extends Service
{
FrequentlyUsedMethods faq = new FrequentlyUsedMethods();
RemoteViews view;
@Override
public void onCreate()
{
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
buildUpdate();
return super.onStartCommand(intent, flags, startId);
}
private void buildUpdate()
{
String lastUpdated = DateFormat.format("hh:mm:ss", new Date()).toString();
Log.i("lastUpdated time", FrequentlyUsedMethods.getCurrentDate());
view = new RemoteViews(getPackageName(), R.layout.main_widget);
MyCount counter = new MyCount(5000,1000);
counter.start();
ComponentName thisWidget = new ComponentName(this, Widget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(thisWidget, view);
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
view.setTextViewText(R.id.widget_button, "done");
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
view.setTextViewText(R.id.widget_button,Long.toString(millisUntilFinished/1000));
}
}
}
しかし、それは私にはうまくいきません。どうすれば解決できますか?多分Handler
使用によって?それともIBind
実装によって?