gpt4 book ai didi

java - Android - 即使下载是在单独的线程中启动的,但文件下载也会出现 NetworkOnMainThreadException

转载 作者:行者123 更新时间:2023-12-01 22:54:12 25 4
gpt4 key购买 nike

我对 Android 上的线程有点困惑,基本上我想下载视频文件,但我收到了 NetworkOnMainThreadException

我的设置如下,我有一个 VideoDownloader 类,该类仅用于下载视频。它的主要方法如下所示:

public void downloadVideoFile(Context context, String videoURL, String targetFileName)
。这将打开到 videoURL 的 http 连接,并使用 contextopenFileOutput 方法和 targetFileName 将其保存到文件系统 作为文件的名称。关于多线程还没有什么需要考虑的。

然后我正在实现一个 VideoDownloadTask ,如下所示:

public class VideoDownloadTask extends Thread {

private VideoDownloader videoDownloader;

public VideoDownloadTask(VideoDownloader videoDownloader){
this.videoDownloader = videoDownloader;
}

@Override
public void run() {
videoDownloader.startDownload();
}

public void cancel(){
Log.d(Constants.LOG, "DEBUG [" + getClass().getName() + "]: Cancel current downloaded in video downloader");
videoDownloader.cancel();

}
}

该类应该在初始化期间给定一个 VideoDownloader 实例,在自己的线程中启动视频下载。

最后,在我的 Activity 中,我执行以下方法:

    private void initiateFileDownload() {

Intent intent = getIntent();
String seriesName = intent.getStringExtra("seriesName");
String amazonKey = intent.getStringExtra("amazonKey");
String videoURL = intent.getStringExtra("videoURL");

URIGenerator uriGenerator = new URIGenerator();
String targetFilePath = uriGenerator.buildTargetFilePath(seriesName, amazonKey);
Log.d(Constants.LOG, "DEBUG [" + getClass().getName() + "]: Initiate file download to file: " + targetFilePath);

VideoDownloader videoDownloader = new VideoDownloader(this, videoURL, targetFilePath);

videoDownloadTask = new VideoDownloadTask(videoDownloader);
videoDownloadTask.run();
}

正如我在一开始所说的,这段代码抛出了一个 NetworkOnMainThreadException ,但我想知道为什么,因为根据我的理解,我是在一个单独的线程中执行视频下载(在 VideoDownloadTask),还是我错了,事实上,我在主线程上创建了 VideoDownloader 的实例,这足以让它在主线程,无论我是否将其交给单独的线程?

任何人都可以帮助我改进这段代码以便下载能够正常工作吗?

最佳答案

使用start()启动一个新线程。 run() 只是运行当前线程中的代码。

关于java - Android - 即使下载是在单独的线程中启动的,但文件下载也会出现 NetworkOnMainThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340793/

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