2011-07-25 9 views
0

新しいパッケージ(アプリケーションの新しいアイテム)をダウンロードするIntentServiceを作成する予定です。私の唯一の問題は、ダウンロードの終わりをブロードキャストするとき、私は、アプリケーションが実行されている場合、メモリモデルを更新する必要があることです。実行していない場合は、起動時にアプリケーションがDBからメモリモデルを作成するため、何もする必要はありません。パフォーマンス面では、UIはメモリからではなく、dbからのものです。 私はどのようにアプローチすべきか、あるいは間違ったトラックに巻き込まれていますか?メモリモデルをサービスから更新する

EDIT:わかりやすくするために、MyIntentServiceを使用してDBに新しい行を挿入し、MyBroadcastReceiverが受信するBroadcastIntentを起動するとしましょう。今私が直面している問題は、MyBroadcastReceiverのインスタンスが何とかシングルトンであるModelクラスを通知する必要があるということです。問題は、このモデル(シングルトン)インスタンスは、アプリケーションのみがUIで消費されるため(DBのみを使用すると遅くなるため)、アプリケーションが実行されている場合にのみ使用できるようにすることです。 Modelインスタンスを使用するUIがない場合、Modelインスタンスに通知する必要はありません。彼らはいつでも開始されているので、自分のモデルをBroadcastReceiverにすることはできません。また、(私が知る限り)シングルトンにすることはできません。

答えて

0

私はこれをUIレシーバーをブロードキャストレシーバーとし、必要に応じてモデルを更新することでこれを解決しました。私のソリューションでは、UIが存在する場合、モデルは常にインスタンス化されます。

もう1つの解決策は、モデルがインスタンス化されているかどうかをチェックし、モデルがインスタンス化されている場合にのみ処理を進めることです。

+0

Observerを使用していますので、登録済みのUIコンポーネントが存在するかどうかはわかります。私はBroadcastReceiverを使用しませんでしたが、アプローチは似たようなものです。 – gmate

0

コードなしであなたの言葉だけを答えて、何かを言うのはちょっと難しいです。 DBから "メモリモデル"を初期化/作成するプロジェクトの別の部分を作成することができます。この部分は不慣れなものでなければなりません。いつでもどこでも、アクティビティ/アプリケーションの開始時やブロードキャスト時に使用できます。

+0

十分に、私はより詳細にすべきでした。私の編集を見てください。 – gmate

関連する問題