0

DownloadManagerを使用して2Gbファイルのダウンロードを開始するので、保存する場所を選択するオプションをユーザに提供しますファイル:内部ストレージまたはSDカード。 また、私は、ダウンロードをキャンセルするオプションをユーザに与えます。ここに私のコードは次のとおりです。DownloadManagerがダウンロードを停止するのに、SDカードを使用する場合のみ

DownloadManager.Query query = new DownloadManager.Query(); 
query.setFilterById(downloadId); 
Cursor cursor = downloadManager.query(query); 

try { 
    if (cursor.moveToFirst()) { 
     int status =cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
     if (status == DownloadManager.STATUS_RUNNING || 
       status == DownloadManager.STATUS_PENDING) { 
      downloadManager.remove(downloadId); 
     } 
    } 
} finally { 
    cursor.close(); 
} 

私の問題:内部ストレージにダウンロードする場合、.remove(downloadId)呼び出しは即座に動作し、ダウンロードが停止します。しかし、同じコードを使用してSDカード(Samsung Galaxy S7 Edge上)にダウンロードすると、ダウンロードを停止するのに3〜5分かかります。

遅延を削除する方法はありますか?

編集:Activity.getExternalFilesDirsによって返されるいくつかの経路の例として、():

/storage/emulated/.../ - これは/内部

/記憶/ 0123から4567であります.../- これはSDカードです

+0

内部ストレージとSDカードにあると思われるパスの例を挙げることはできますか? – greenapps

+0

は、パスを追加する質問を編集したばかりです – zrgiu

+0

/storage/emulated/0/......は外部ストレージと呼ばれています。 getExternalStorageDirectory()で取得します。しかし、私は解決策を見ません。ごめんなさい。他のデバイスをテストしましたか? – greenapps

答えて

0

ダウンロードが始まる前に、DownloadManagerは2Gbファイル(ダウンロードしているファイルのサイズ)を0で埋めていますそのため ストレージを割り当てたままにします。そのファイル書き込み操作は、SDカードでこれを遅くするものです。

S7 Edgeの内部ストレージは非常に狂っています。そのため、そこに問題が存在しません。実際の問題(私の意見ではOSのバグ)は、.remove()を呼び出すと、その初期書き込み操作がキャンセルされるのを待つことになります。

関連する問題