gpt4 book ai didi

java - 创建多个AsyncTask

转载 作者:行者123 更新时间:2023-12-02 07:11:56 25 4
gpt4 key购买 nike

我正在为我的 Android 项目使用外部库。通过该库,我可以从流 Mp3 url 获取 ID3 标签。代码使用 URLConnection 到达链接,然后获取标签信息。但问题是它的过程非常慢。

在主线程上执行此操作时,需要 2 分钟以上才能从 URL 中获取 25 首歌曲的 ID3 标签。所以我决定使用多个 AsyncTasks 来加快进程速度,我使用了下面的代码。它变得更快了一点,但仍然比 2 分钟标记低了几秒钟。当我检查 DDMS 的“线程”选项卡时,我发现在运行时,只有 6 个 AsyncTask 创建并运行。

我的问题是,如何增加此循环中运行的 AsyncTask 的数量。

counter=0;
for (final SongDetail e : songs) {

new AsyncTask<Void , Void, Void>() {


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

try {

MP3 mp3 = new MP3(e.getLink());
e.setTitle(mp3.getTitle());
e.setArtist(mp3.getBand());
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(Void result) {
counter++;

if(counter==songs.size()) {
Log.d("KA","loop finished");

}
}

}.execute();
}

最佳答案

Android 操作系统将决定在任何给定时间可以运行多少个并行线程。仅仅因为您启动了其中 20 个并不意味着它们都会运行。 Android 操作系统会将它们排队并一次运行其中的一些。

有关更多详细信息,请参阅此答案: Running multiple AsyncTasks at the same time -- not possible?

关于java - 创建多个AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com