2017-09-12 9 views
0

私のアプリケーションは、サーバーにURLのリストを取得する要求で始まります。私はこれらのファイル(html、css、jsファイル)をすべてURLからダウンロードしたい。しかし、私はこれらのダウンロードが他の活動のパフォーマンスを妨げることなくバックグラウンドで行われることを望んでいます。他の活動のパフォーマンスに影響を与えずに、バックグラウンドでファイルのリストをダウンロードするには?

私はonResponse()内でAsyncTaskを使ってVolley Requestを作成する方法を持っていました。

しかし、Androidはあなたが間違いなくファイルシステムにダウンロードするので、同じ

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); 

      } 
     } 
    } 
+0

ダウンロードすると、ファイルシステムにダウンロードして保存するか、ダウンロードするだけでアプリケーション環境にレンダリングすることを意味しますか? – MadScientist

+0

はい、ダウンロードすることはファイルシステムに保存することを意味します。 –

+0

ああ、私は完璧な解決策を待って.. – MadScientist

答えて

1

「MainActivityで起こってあまりにも多くの仕事」のような警告を私に投げられているが「あなたのものです

ためのコードは次のようになりますを探しても、それがバックグラウンドで完全に起こる必要再、あなたは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は、あなたが私のコードで見ることができるようにもDOC here

をチェックし、私はPDFファイルをダウンロードするためにそれを使用しました、フォアグラウンドシステムサービスで、あなたにファイルをダウンロードするには、このシステムサービスを使用することができます映画全体のように重く:)

+0

ありがとう!しかし私も同じことをしました。しかし、私は、質問に記載されているように、Volley Requestを使用してエンドポイントからURLを取得します。これは他のリクエストのパフォーマンスに大きく影響します。 –

+0

はい使用Volley/Retrofit、非同期で、魅力的に動作します –

0

のための非同期タスクを試してみてください

関連する問題