私はタイムテーブルをダウンロードして保存するアプリを持っており、このタイムテーブルの変更を定期的にダウンロードしています。私は現在シングルトンを使用していますが、私はこれをデザインの観点から見ていません。ダウンロードのために、ネットワークの使用を最小限に抑えるために集中化されたシステムが必要です。アプリからウィジェットを更新するには?
シングルトンからの更新を必要とするすべてのクラスは、最初にこのシングルトンのインスタンスを取得し、更新が必要なときに特定のメソッドが呼び出されるインターフェイスを提供します。現在、シングルトンはワーカースレッドのすべてのダウンロードを処理します。通常、アクティビティから呼び出されたAsyncTaskを使用しますが、結果をウィジェットにも送信する必要があるため、この作業は表示されません。
代わりに、サービスを使用しています。ウィジェットとアクティビティの両方からバインドするだけです。この場合の問題は、私がBroadcastReceiver(AppWidgetProvider)からバインドできないことです。問題は私のウィジェットを定期的に更新できないことです。
私の質問は、サービスからウィジェットを更新して(シングルトンを取り除くため)、またはより良い方法があるように、私のアプリを設計する方法(または:できますか)です多分BroadcastReceivers)?
特定の時刻にダウンロードを実行する必要はないため、AlarmManagerの代わりにハンドラを使用します。そうでなければ:ありがとう、それは明らかに割り当て。 – Boude
@Boude: "特定の時刻にダウンロードを実行する必要はないので、AlarmManagerの代わりにHandlerを使用します" - プロセスが終了すると、 'Handler'がなくなります。 'AlarmManager'は、あなたのUIがフォアグラウンドになくてもそれらのダウンロードが起こるはずであれば、定期的にダウンロードするほうがはるかに良い解決策です。 – CommonsWare
ウィジェットが表示されたら、ダウンロードを実行する必要があります。アクティビティとウィジェットの両方が表示されていない場合にのみ、ダウンロードは不要です。私は私のアルファをテストしている間に両方を試してみるだろうと思って、いくつかのユーザー体験に基づいて私の決定をする。私はあなたの議論を非常に慎重に検討します、ありがとうございます。 – Boude