Я разработал загрузчик файлов, который показывает прогресс в панели уведомлений (например, загрузки Android Market).Я основал свою работу на этом примере .
В разделе «Мои действия» я запускаю тему загрузки, например
private void startDownload() {
DownLoadFileHandler filedownLoad = new DownLoadFileHandler(this, getIntent().getDataString(),mDirectory,mFileName.getText().toString(),mHandler);
filedownLoad.downloadfile();
finish(); //End the Spawning activity
}
Функция запуска в теме загрузки
public void run()
{
try
{
//do some pre processing
setupNotification();
//while downloading keep updating notification with flag FLAG_ONGOING_EVENT
Once Download is complete change the flag FLAG_AUTO_CANCEL and update for the final
time
}
catch (Exception e) {
if(notificationManager != null)
notificationManager.cancel(DOWNLOAD_NOTIFICATION);
}
}
Теперь я заметил, что при загрузке файлов, если я делаю /принимать вызов в течение значительного количества времени (в сети 2g, которая не поддерживает вызов и сеть одновременно), поток умирает, исчезает, и мое уведомление о неполных загрузках остается застрявшим в виде текущего уведомления в панели уведомленийкоторый может быть очищен только после перезагрузки.
Я чувствую, что я создал поток из Activity (единственное действие в то время в приложении), а затем вызвал финиш для него - ошибка с моей стороны.Поэтому мне нужно пересмотреть код.
Мои вопросы, что именно я делаю не так в этом подходе (поскольку загрузка, кажется, работает с обновлениями уведомлений, если нет вызова)
Что должно бытьлучший подход к решению проблемы, как указано выше?