質問

私は、ファイルをダウンロードしてサービスを提供しています。ダウンロードが完了すると、私は私のActivityに私の「ダウンロードされたファイル」リストを更新したいと思いますが、Activityが実行されている場合のみ。私はそれが実行されていない場合Activityを起動する必要はありません。

私はいくつかの特別なフラグを使用して新しいIntentを作ることによってこれを行うことができます願っていた。

誰もが、私はこれを達成することができますどのように任意のアイデアを持っていますか?小さなコード例かもしれない?

役に立ちましたか?

解決

あなたは新しいBroadcastReceiverインスタンスを作成して、アクティビティのonResume()メソッドでこれらの線に沿って何かを行うことができます:

registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED));

その後、あなたがしたいコンポーネントをアップデート機能を呼び出すことがmyReceiverのonReceive()メソッドをオーバーライドします:

@Override 
public void onReceive(Context context, Intent intent) {
...
    updateViewWithData(service.getNewFileData());
...
}

あなたのアクティビティのonPause()メソッドでは、単に受信機の登録を解除します:

unregisterReceiver(myReceiver);

私は、これはあなたが、不明確なものがあればお気軽に役立つことを願っています。

他のヒント

これを行うには良い方法は、サービスにあなたの「ダウンロードしたファイル」の活動をバインドすることです。あなたがサービスをバインドすると、onServiceConnected機能では、バインダーのコールバックを登録します。あなたが利用可能な新しいデータを持っている時はいつでもその後、サービスだけではコールバックを呼び出します。アクティビティが実行されていない場合、それはあなたの活動を通知しないように、サービス側でコールバックリストは、空になります。

このアプローチの例については、AndroidのSDKにRemoteService.javaを見てみます:

サンプル\ ApiDemos \ SRC \ comの例\ \ androidの\のAPI \アプリ\

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top