Android DownloaderManager
kullanırken
SharedPreferences settings = getSharedPreferences("DownloadIDS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putLong("downloadIds", downloadID);
editor.commit();
Sen kimliği sonradan ulaşabildiği bir sistem hizmetidir. Her zaman koşuyor olması gerekiyordu. Ama kaçamadığı bazı durumlar var.
indirme HTTP kalıcı bağlantısı üzerinden gerçekleşir. Bu, aynı HTTP bağlantısı/yanıtı için kullanılan aynı bağlantı anlamına gelir. Bağlantı kesintisi, hata oluşur ve bu nedenle durumu referans kimliği ile takip edemezsiniz.
Android DownloadManager
hizmeti, sunucudan STATUS
hizmetinin alınacağı Android DownloadManager
hizmeti aracılığıyla izlersiniz.
Android DownloadManager sunucusundan content-length
tabanlı indir kullanır. Content-Length
başlığı, akışa izin vermeyecektir (link). İçerik uzunluğuna dayalı indirme, özgeçmiş, duraklatma, kısmi indirme avantajına sahiptir - yukarıdaki bağlantı1'e bakın. Yani, sistemi yeniden başlattığınız zaman, yine indirmeyi yeniden başlatır (artırır).
content-length
tabanlı yükleme store and forward
(link) 'dir. Tamponlanmış içeriği kalıcı depolama alanına yönlendirmelisiniz, çünkü sınırlı sabit diskleriniz var.
Android DownloadManager
ürününün ERROR_CANNOT_RESUME int
numaralı telefonu vardır (link). ERROR_CANNOT_RESUME
, COLUMN_STATUS
bayrağına dayanmaktadır. İki tür COLUMN STATUS vardır: STATUS_PAUSED
veya STATUS_FAILED
. Sistem kapanmadan önce, sistem BroadcastReceiver
aracılığıyla kapanma hakkında Android DownloadManager
hizmetini gönderir. Android DownloadManager
, daha sonra STATUS_PAUSED
bayrağını etkinleştirir. Ve bir dahaki sefere cihazı yeniden başlattığınızda, sistem servisi otomatik olarak çalışır, STATUS_PAUSED sonra tekrar indirmeye başlar.
Cevap: orada (istemci tarafı, bağlantı veya sunucu tarafında) hatası olur ya da dosya (o STATUS_SUCCESSFUL
kadar anlamına gelir) indirirken bitmedi yüzden dek, Android DownloadManager
olan durumunun almaya devam. STATUS_FAILED
olduğunda durum bilgisi alamazsınız - indirme tekrar denenmeyecektir (link).
Nasıl STATUS_FAILED
olur? Müşterinin DownloadManager
hizmet HTTP durum kodunu 4XX ( istemci yanıldı edilir tahmin Sunucusu) ve 5XX (Sunucu sunucu yanıldı algıladığında) (link), şimdi STATUS_FAILED
gerçek olur algılar.
Diğer bazı durumlar: zaman Müşteriler tutar devre açma ve sunucu mantığına göre, sunucu zaman aşımı ile bağlantıyı kesebilirler. Yani, bu kontrol açıkça farklı HTTP sunucusuna dayanmaktadır. Bu günlerden burada pek bir şey istemeyiz. Sunucu tarafı mantığını bilmiyoruz. Status_codes sunucuya dayanmaktadır. Sunucuya karar verdiğinde istemci başarısız oldu ve sunucu, sunucu tarafında STATUS_FAILED
bağlantıyı timeout
yapıyor. istemciler, TCP bağlantılarının rasgele zamanlarında kaybolması için hazır olmalı ve bağlantıyı yeniden kurmalı ve HTTP isteğini yeniden deneyebilmelidir. Erken kapatılmış bir bağlantı bir hata olarak ele alınmamalıdır; Bir bağlantı, yalnızca bağlantıyı yeniden kurma girişimi başarısız olursa, sinyal verilebilir. Sorunuzun kesin bir cevabı yok.
Not: TCP connections to disappear at arbitrary times
(link) kapalı Cihazınızın gün belli bir sayıdan sonra bağlantınızı devam ettirebilirsiniz burada ana mantıktır.
1) STATUS_FAILED
numaralı telefondan, daha fazla veriyi izlemeye devam edemezsiniz.
2) Açık COLUMN_STATUS
, ne STATUS_FAILED
ne de STATUS_PAUSED
ise, bu sütunun değeri tanımsızdır, burada daha fazla veriyi izleyemeyebilirsiniz.
- Yukarıdaki iki koşul dışındaki herhangi bir şey, indirme işlemi devam ediyor.
Aynı soruya da sahibim ... tahminim, kullanıcı indirmeyi Download Manager uygulamasından kaldırmadığı sürece verilere erişebileceğidir (uzun basıp silme). – daramasala