0

私のアプリは頻繁に画像をダウンロードする必要があります。だから私はダウンロード請願を提供するためにIntentServiceを実装しています。

最初の問題は、IntentServiceが順番に順番にダウンロードを提供することです。ダウンロードに優先順位を付け、同時に複数のダウンロードを行う方法が必要です。

ちなみに、(IntentService内で)ThreadPoolExecutorをPriorityBlockingQueueと一緒に使用するか、PriorityBlockingQueueとAsyncTasksを組み合わせて使用​​することを検討しています

この問題に対する最善のアプローチは何ですか?他に合理的な可能性はありますか?

前もって感謝します

4

3 に答える 3

2

AsyncTask を使用します....次のスニペットは、参考のために AsyncTask を実行します。

プライベート クラス doSomethingDelayed extends AsyncTask {

    private int num_runs = 0;

    @Override
    protected Void doInBackground(Void... gurk) {

        Log.v(TAG, "going into postData");

        long ms_before = SystemClock.uptimeMillis();
        try {
            Log.v(TAG, "Time Now is " + ms_before);
            postData();
            Log.v(TAG, "coming out of postData");
            publishProgress(num_runs);
        } catch (Exception e) {
            System.out.println("--DoSomeThing--" + e.getMessage());
        }

        return null;
    }

    @Override
    protected void onCancelled() {
        Context context = getApplicationContext();
        int duration = Toast.LENGTH_LONG;
    }

    @Override
    protected void onProgressUpdate(Integer... num_runs) {
        Context context = getApplicationContext();



            }
        } 
    }
}
于 2012-08-20T07:33:19.783 に答える
1

実際、aIntentServiceはすべてを順番に処理し、使用可能なIntentがなくなるとシャットダウンします。あなたが自分の仕事をするための別のスレッドを持っているとき、これはうまくいかないと思います。

あなたができることは、「通常」Serviceを使用し、AsyncTaskなどを使用することです。タスクが完了したら、を呼び出すことができますstopSelf()

于 2012-08-20T07:27:35.840 に答える
1

バックグラウンドで小さなものをダウンロードしている場合は、android.os.AsyncTaskがアプローチの方法です。例については、http://code.google.com/p/minemessagevibrator/source/browse/trunk/src/com/mine/oauth/MineOAuthAccessActivity.javaを確認してください。

于 2012-08-20T07:34:51.370 に答える