AlarmManager
生成されたブロードキャストでアプリウィジェットを更新するのはあまりうまくいきません。これが私がすることです:
で初期AlarmManager
化AppWidgetProvider#onEnabled
AlarmManager alarms = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE);
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(), 60000, pendingIntent);
また、によって起動された更新を単にリッスンするブロードキャストレシーバーを定義しますAlarmManager
。AsyncTask
更新が実行されると、ネットワーク呼び出しを行うコードが実行されます。AsyncTask
が完了すると()onPostExecute
、以前に取得したインスタンスを使用しAppWidgetManager
てウィジェットを更新します。ログにメッセージが表示されるまで、すべてが実際に正常に実行されます。"Process com.foo.myapp (pid 12345) has died"
その後、AlarmManager
別の更新が実行されることはありません。
アラームを再開する何らかのチェックが必要ですか?たとえば、ユーザーがウィジェットの親アプリにアクセスする場合はどうなりますか?リクエストの途中でアプリが停止した場合に、長時間実行されるタスクを完了してウィジェットに戻ることができるようにするにはどうすればよいですか?