どのように活動を更新する意図を使用するには?
-
19-09-2019 - |
質問
私は、ファイルをダウンロードしてサービスを提供しています。ダウンロードが完了すると、私は私の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 \アプリ\