5

リストビュー内にいくつかのファイルをリストする初期アクティビティを持つアプリがあります。リスト内のアイテムをクリックすると、その特定のファイルの詳細なアクティビティが表示されます。

詳細ビューには、ダウンロードというボタンがあります。ダウンロードをクリックすると、ダウンロードするファイルをオフにする IntentService が開始されます。

downloadButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(AppDetailsActivity.this, AppDownloadService.class);
        intent.putExtra(Consts.APP_DOWNLOAD_RECEIVER_KEY, new DownloadReceiver(new Handler()));
        startService(intent);
    }
});

DownloadReceiver クラスは、ダウンロード ファイルの詳細なアクティビティ内の進行状況バーを更新するために使用されます。

今、やりたいこと...

ユーザーが現在詳細アクティビティからファイルをダウンロードしていて、前のアクティビティに戻る場合、アクティビティが同じ IntentService にサブスクライブ/バインドし、結果を取得して、リスト内に進行状況バーを表示できるようにする必要があります。ダウンロード中のファイルの項目。

  1. これは IntentService を使用して可能ですか?
  2. IntentService は正しいことですか?
  3. 例はありますか (これを行う方法を示すものは何も見つかりませんでした)?
4

2 に答える 2

9

ダウンロードの場合は、IntentService. 別のスレッドで実行されます。startService()また、そのために数回呼び出すとIntentService、キューが作成され、一度に 1 つのインテントが処理されることに注意してください。

I don't belive ブロードキャストで進行状況を表示するActivityことは正しいことです。順番に処理される可能性が高いですが、フレームワークまたは Android 自体は、配信時に順番を保証しません。これは、50% のブロードキャストを取得してから、40% のブロードキャストを取得できることを意味します。これについては、次の例をご覧になることをお勧めします: http://developer.android.com/reference/android/app/Service.html#LocalServiceSample

少し複雑に見えるかもしれませんが、信頼できる双方向のコミュニケーションが得られます。

于 2013-04-30T14:51:06.550 に答える
0

私は解決策を見つけることができました。サービスの進行状況を公開するには、ブロードキャスト インテントを使用する必要があることがわかりました。そして、アクティビティで BroadcastReceiver を使用して結果を取得します。

以下のリンクは、ブロードキャストを介してサービスから結果を送信および取得する例を示しています。

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

于 2012-11-14T09:05:55.940 に答える