Java Android小部件异步任务

Java Android小部件异步任务,java,android,android-asynctask,android-widget,Java,Android,Android Asynctask,Android Widget,我有一个android应用程序和小部件,它应该解析一些rss并获取一些数据。 以下是我的onReceive方法: @Override public void onReceive(Context context, Intent intent) { super.onReceive(context,intent); if (intent.getAction().equals(ACTION_TOAST)) { new

我有一个android应用程序和小部件,它应该解析一些rss并获取一些数据。 以下是我的onReceive方法:

@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(上下文…参数){
列表输出=新的ArrayList();
试一试{
int k=15;
doc=Jsoup.connect(“http://vlg-media.ru/transport).get();
字符串img=“”;
int i=0;
标题=文件选择(“.art_img”);
用于(元素标题:标题){
字符串IMG=URL;
字符串HREF;
//元素Img=标题。选择(“.art_image”).first();
IMG=”http://vlg-media.ru“+titles.select(“img”).attr(“src”).toString();
IMG=IMG.替换(“小型”、“中型”);
HREF=”http://vlg-media.ru“+titles.select(“a”).attr(“href”).toString();
//元素标题=标题。选择(“.con_titlelink”).first();
字符串title=titles.select(“img”).attr(“alt”).toString();
m=新的HashMap();
m、 put(属性、名称、标题);
//добавление данных в наш контейнер
数据。添加(m);
出版进度();
i++;
//}
如果(i==k)
打破
}
//}
}捕获(例外情况除外){
this.exception=ex;
返回null;
}
返回输出;
}
受保护的void onPostExecute(列表输出){
//确保它运行
Toast.makeText(上下文“完成”,Toast.LENGTH_LONG.show();
}
}
做了这些事后,背景什么也没发生。onPostExecute从不运行。
我只需要在AppWidgetProvider中运行异步解析器。不知道问题出在哪里。

您从未分配
上下文对象。在你的情况下是公正的

 context = params[0];

作为
doInBackground

的第一行,我真的需要它吗?我不确定。这是doInBackground从不运行的原因吗?您说过,
onPostExecute
从不运行。在
onPostExecute
中添加
@Override
会发生什么情况?