我的应用程序首先请求服务器获取网址列表。我想从网址下载所有这些文件(html,css和js文件)。但是我希望这些下载在后台发生,而不会干扰其他活动的性能。
我有一种在onResponse()中使用AsyncTask制作一个Volley请求的方法。
但Android一直在向我发出警告,例如"在MainActivity中发生太多工作"
答案 0 :(得分:1)
你绝对应该尝试相同的
Async Taskpublic class Sample extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample);
new BackGroundTask().execute();
}
class BackGroundTask extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected String doInBackground(Void... arg0)
{
//method
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
}
}
}
答案 1 :(得分:0)
由于将其下载到文件系统是您正在寻找的并且还需要它完全在后台进行,您可以尝试DownloadManager
系统服务:
代码如下:
DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request pdfDownloadRequest = new DownloadManager.Request(Uri.parse(
/*url endpoint here*/));
pdfDownloadRequest.allowScanningByMediaScanner();
pdfDownloadRequest.setDescription("Can add custom description here.. ");
pdfDownloadRequest.setTitle("This sets a title for the download foreground notification");
pdfDownloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
pdfDownloadRequest.setVisibleInDownloadsUi(true);
// once the request is set, just add it to the download manager and it will handle it for you..
downloadManager.enqueue(pdfDownloadRequest);
DownloadManager
是前台系统服务,请查看文档here
另外正如您在我的代码中看到的,我用它来下载PDF文件,您可以使用此系统服务下载与整部电影一样重的文件:)