gpt4 book ai didi

java - 如何使用 Asynctask 将下载从主线程移动到后台线程

转载 作者:行者123 更新时间:2023-12-02 01:52:48 24 4
gpt4 key购买 nike

我是 Android 开发人员的初学者,我正在尝试弄清楚如何下载多个文件。我已经完成了一个简短的 YouTube 教程,该教程下载单个 PDF 文件,但它是在主线程中执行的。我也想解决此代码中的一些问题,但现在,我想知道如何将 AsyncTask 合并到我的代码中以在后台下载 PDF 文件。

这是我的代码:

public class MainActivity extends AppCompatActivity {

Button btn;
DownloadManager downloadManager;
private String exampleURL = "https://doc.lagout.org/programmation/Actionscript%20-%20Flash%20-%20Flex%20-%20Air/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29.pdf";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btn = findViewById(R.id.download_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(exampleURL);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
Long reference = downloadManager.enqueue(request);
}
});
}
}

我知道有些人会问“长引用”在那里做什么,因为它从未被使用过。老实说 idk 也是如此,个人既没有解释也没有在任何地方使用它,但当我从代码中删除它时,下载似乎不起作用。

此代码的另一个问题是,与从 Chrome 等应用程序进行传统下载不同,您不会收到任何类型的 Toast 消息,告诉您下载已开始,并且您需要向下拖动小部件以查看是否正在下载。换句话说,其下方的屏幕没有显示下载的指示。

最佳答案

您正在尝试解决一个不存在的问题。

将下载请求放入 AsyncTask 中是没有意义的,因为 DownloadManager 已经为您异步下载了。

关于java - 如何使用 Asynctask 将下载从主线程移动到后台线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711248/

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