2017-01-18 5 views
1

У меня есть этот класс:Run Asyntask код, когда приложение закрыто или в фоновом режиме

private class ReadRSSTask extends AsyncTask < URL, Integer[], Integer[] > { 

    protected Integer[] doInBackground(URL...urls) { 
     try { 
      feed = RssReader.read(urls[0]); 
      rssItems = feed.getRssItems(); 
      for (RssItem rssItem: rssItems) { 
       item = new Item(rssItem.getTitle(), rssItem.getDescription(), 
         rssItem.getPubDate()); 
       list.add(item); 
      } 
      ... 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     size = list.size(); 
     ... 
     return new Integer[]{size,size_}; 
    } 

    protected void onPostExecute(Integer[] result) { 
     final int how = (copySize-result[0])*-1; 
     final int how_ = (copySize_-result[1])*-1; 
     if (how > 0) { 
      avvisi.setText(String.valueOf(how)); 
     } 
     if (how_ > 0) { 
      eventi.setText(String.valueOf(how_)); 
     } 
    } 
} 

Я хочу этот метод работать, даже если приложение закрыто или в фоновом режиме и отображать уведомления. Он должен проверить, находится ли приложение в фоновом режиме или закрыто, и вызвать их метод, верно?

+0

Вы ищете услугу не asynctask – Raghunandan

+0

Я согласен с Raghunandan. Но если вы хотите отобразить уведомление, например, Toast. Лучше не использовать 'avvisi.setText' или аналогичные представления. 'Потому что вид больше нет. – TruongHieu

+0

Вам нужна услуга. Если вы хотите, чтобы служба выполнялась независимо, вам нужно что-то вроде триггера тревоги. –

ответ

0

Возможно, вы можете сделать это в классе обслуживания. У вас есть look

Надеюсь, он вам поможет.

+0

Спасибо за ответ. – user7429926

0

Если вы хотите, чтобы какой-либо код выполнялся, пока пользователю не отображается Activity, вы должны использовать класс, полученный из класса Service. Обратите внимание, что сам Service может выполнить свой собственный поток.