2017-08-16 19 views
2

私はアンドロイドアプリでFast-Android-Networkingライブラリを使用してファイルをダウンロードしています。大きなファイルがダウンロードされている間にAndroidアプリが遅れる

15 megabytes未満のファイルの場合、私のコードは正常に動作します。しかし、長さが20 megabytes以上のファイルをダウンロードしようとすると、アプリケーションとターゲットデバイスの遅延が発生します。

512MBのRAMを搭載した古いLenovo A319でテストしたところ、問題が見つかり、ハードウェアに問題があると考えました。

しかし、レノボA6000、サムスンJ1 4G、モトローラモトGターボとLYF水11でアプリケーションをテストした後、私は、アプリケーションがすべてのデバイスで遅れているとのみながらファイルがこの決定に来ましたダウンロード中です。

なぜこの問題が起こっているのか理解できません。私もlogcatをチェックしましたが、問題の根本を理解するのに役立つものは何も見つかりませんでした。

私のコードの一部this問題に基づいて

AndroidNetworking.download(link, Environment.getExternalStorageDirectory().getPath() + "/ABCD", title + "."+fileExtension) 
      .setTag("Download: " + title) 
      .setPriority(Priority.HIGH) 
      .build() 
      .setDownloadProgressListener(new DownloadProgressListener() { 
       @Override 
       public void onProgress(long bytesDownloaded, long totalBytes) { 
        int percentage = (int) Math.floor(bytesDownloaded * 100.0/totalBytes); 
        System.out.println(percentage); 
        //I'm using Notification to report progress to user. 
        mBuilder.setProgress(100, percentage, false); 
        mNotifyManager.notify(id, mBuilder.build()); 
       } 
      }) 
      .startDownload(new DownloadListener() { 
       @Override 
       public void onDownloadComplete() { 
        if (file.length() < 500000) { 

         Snackbar.make(mView, "Download Error", Snackbar.LENGTH_LONG).show(); 
         mBuilder.setContentText("Download Error!").setProgress(0, 0, false); 
         mNotifyManager.notify(id, mBuilder.build()); 

        } else { 

         Uri path = Uri.fromFile(file); 
         Intent intent = new Intent(Intent.ACTION_VIEW); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         intent.setDataAndType(path, getMimeType(path.toString())); 

         PendingIntent notifyPIntent = PendingIntent.getActivity(mContext.getApplicationContext(), 0, intent, 0); 
         mBuilder.setContentIntent(notifyPIntent); 

         mBuilder.setContentTitle("Download Completed") 
           .setContentText("Download complete! - Click To Play") 
           .setProgress(0, 0, false); 
         mNotifyManager.notify(id, mBuilder.build()); 

         Snackbar.make(mView, "Download Completed : " + title + "."+fileExtension, Snackbar.LENGTH_LONG).setAction("Play Now", new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           Uri path = Uri.fromFile(file); 
           Intent intent = new Intent(Intent.ACTION_VIEW); 
           intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
           intent.setDataAndType(path, getMimeType(path.toString())); 
           mContext.startActivity(intent); 
          } 
         }).show(); 

        } 
       } 

       @Override 
       public void onError(ANError error) { 
        Snackbar.make(mView, "Download Error : " + error.toString(), Snackbar.LENGTH_LONG).show(); 
        error.printStackTrace(); 
        mBuilder.setContentText("Download Error!"); 
        mBuilder.setProgress(0, 0, false); 
        mNotifyManager.notify(id, mBuilder.build()); 
       } 
      }); 

答えて

0

、ライブラリはメモリ使用領域における重大な問題があります。

+0

私にいくつかの提案を教えてもらえますか? (Koushのイオンなし) –

+0

@Exploit確かに、あなたは間違いなくこのライブラリを正確に使用する必要はありません。 –

+0

いくつかの問題がありましたが、私は少なくともイオンに移動しました。 –

関連する問題