2015-09-28 5 views
0

У меня есть приложение для Android с виджетами, которые должны анализировать некоторые rss и получать некоторые данные. Вот мой OnReceive метод:Android-виджет asynctask

@Override 
    public void onReceive(Context context, Intent intent) { 
     super.onReceive(context,intent); 
     if (intent.getAction().equals(ACTION_TOAST)) {   
      new RetrieveTask().execute(context); 
      } 

    } 

И асинхронной сам метод:

class RetrieveTask extends AsyncTask<Context,Void, List<String>> { 
    private Exception exception; 
    private Context context; 
    private RemoteViews views; 

    @Override 
    protected List<String> doInBackground(Context... params) { 

      List<String> output = new ArrayList<String>(); 
     try { 
      int k = 15;     
      doc = Jsoup.connect("http://vlg-media.ru/transport").get(); 

      String img = ""; 
      int i = 0;     
      Title = doc.select(".art_img"); 

      for (Element titles : Title) { 
       String IMG = URL; 
       String HREF; 
       //Element Img = titles.select(".art_image").first(); 
       IMG = "http://vlg-media.ru" + titles.select("img").attr("src").toString(); 
       IMG = IMG.replace("small", "medium"); 
       HREF = "http://vlg-media.ru" + titles.select("a").attr("href").toString(); 
       // Element Title = titles.select(".con_titlelink").first(); 
       String title = titles.select("img").attr("alt").toString(); 

       m = new HashMap<String, Object>(); 
       m.put(ATTRIBUTE_NAME_TITLE, title); 

       //добавление данных в наш контейнер 
       data.add(m); 
       publishProgress(); 
       i++; 
       //} 
       if (i == k) 
        break; 
      } 
      //} 
     } catch (Exception ex) { 
      this.exception = ex; 
      return null; 
     } 
     return output; 
    } 



    protected void onPostExecute(List<String> output) { 
     //to make sure it run 
     Toast.makeText(context,"Done",Toast.LENGTH_LONG).show(); 
    } 

} 

После doInBackground ничего не происходит. onPostExecute никогда не запускается. Мне просто нужно запустить асинхронный парсер в моем приложении AppWidgetProvider. Не знаю, где проблема.

ответ

0

Вы никогда не назначаете объект Context. В вашем случае это просто

context = params[0]; 

в качестве первой линии doInBackground

+0

Так что, я действительно это нужно? Я не уверен. Это причина, почему doInBackground никогда не запускается? – TooLazy

+0

Вы сказали, что 'onPostExecute' никогда не запускается. Что происходит, вы добавляете '@ Override' в' onPostExecute'? – Blackbelt

Смежные вопросы