在单独的线程中下载函数

时间:2014-11-03 18:39:18

标签: java android multithreading networking

在我的Android应用程序中,偶尔会有一些文件需要下载。 所以我写了这样的下载功能:

public static void download(Context context, String url, String path) {
   URLConnection conection = new URL(url).openConnection();
   conection.connect();
   InputStream is = new URL(url).openStream();
   OutputStream os = context.openFileOutput(path, 0);
   pipe(is, os);   // write from inputstream to outputstream
   os.close();
}

我不能决定将此功能放在单独的线程中吗? 当我把它放在一个单独的线程中然后如果我想用for-loop下载10个文件然后所有它们开始下载10个同时单独的线程,这是不好的! 当我没有放入一个单独的线程时,主线程必须等到下载完成,这也不好!

解决方案是什么?

2 个答案:

答案 0 :(得分:0)

解决方法不是将此函数放入线程,而是在需要时从线程调用该函数。

答案 1 :(得分:0)

如果您希望两个文件都在后台下载并让它们一次下载一个,请使用ThreadPoolExecutor并向其提交Runnables:

http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html