如何在不影响其他活动性能的情况下下载后台文件列表?

时间:2017-09-12 07:46:22

标签: java android

我的应用程序首先请求服务器获取网址列表。我想从网址下载所有这些文件(html,css和js文件)。但是我希望这些下载在后台发生,而不会干扰其他活动的性能。

我有一种在onResponse()中使用AsyncTask制作一个Volley请求的方法。

但Android一直在向我发出警告,例如"在MainActivity中发生太多工作"

2 个答案:

答案 0 :(得分:1)

你绝对应该尝试相同的

Async Task
public 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文件,您可以使用此系统服务下载与整部电影一样重的文件:)