0

我的应用程序需要经常需要下载图像。所以我正在实施一个 IntentService 来服务下载请求。

第一个问题是 IntentService 按顺序提供下载服务,我希望有一种方法来确定下载的优先级并同时进行多个下载。

顺便说一句,我正在考虑使用(在 IntentService 内部)带有PriorityBlockingQueue的 ThreadPoolExecutor或结合 PriorityBlockingQueue 和 AsyncTasks。

解决这个问题的最佳方法是什么?还有其他一些合理的可能性吗?

提前致谢

4

3 回答 3

2

您使用 AsyncTask.... 以下代码段执行 AsyncTask 供您参考:

私有类 doSomethingDelayed 扩展 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 回答