如何从另一个类启动AsyncTask?

时间:2014-11-12 17:56:20

标签: android android-asynctask

我想从另一个类执行我的ArticleListFragment_develop.class的AsyncTask内部类的doInBackground()方法。我该怎么做呢?有人可以帮我解释一下语法吗?我尝试过一些东西,但我一直都会遇到错误。

  public class ArticleListFragment_develop extends ListFragment { 

   ........
  private class DownloadXmlTask extends
        AsyncTask<String, Void, ArrayList<Article>> {
    /*
     * @Override protected void onPreExecute() { pDialog = new
     * ProgressDialog(getActivity());
     * pDialog.setMessage("Loading search results...");
     * pDialog.setIndeterminate(true);
     * pDialog.setCanceledOnTouchOutside(false); pDialog.show(); }
     */
    @Override
    protected ArrayList<Article> doInBackground(String... urls) {
        Log.d(TAG, "DownLoadXmlTask Thread id: "
                + Thread.currentThread().getId());

        try {
            return loadXmlFromNetwork(urls[0]);
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return articles;
    }

3 个答案:

答案 0 :(得分:0)

将AsyncTask写入单独的类文件中并使用它。

new DownloadXmlTask().execute();

答案 1 :(得分:0)

First read this.然后你必须对你的异步任务进行OBJECT。在您的类中编写将执行异步任务并调用它的公共方法。调用者对象必须引用您的片段对象。

答案 2 :(得分:0)

似乎您的问题是内部类AsyncTask对任何其他类都不可见。 我的建议是将AsyncTask从ArticleListFragment_develop类中取出,或者创建一个函数并从外部类调用它。