Для создания темы из Activity в Android нужен совет по ре-факторингу - PullRequest
0 голосов
/ 13 февраля 2012

Я разработал загрузчик файлов, который показывает прогресс в панели уведомлений (например, загрузки 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 (единственное действие в то время в приложении), а затем вызвал финиш для него - ошибка с моей стороны.Поэтому мне нужно пересмотреть код.

Мои вопросы, что именно я делаю не так в этом подходе (поскольку загрузка, кажется, работает с обновлениями уведомлений, если нет вызова)

Что должно бытьлучший подход к решению проблемы, как указано выше?

1 Ответ

0 голосов
/ 14 февраля 2012

Для продолжительного действия, такого как загрузка файла, которое вы хотите продолжать запускать, даже если ваша активность не находится на переднем плане, вам следует рассмотреть возможность использования Service .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...