没有调用onPostExecute

时间:2015-07-06 12:13:48

标签: android android-asynctask

我试图在完成onPostExecute()方法后调用doInBackground()方法,但是没有调用它。我该如何解决这个问题?

我已调试它,我可以在ArrayList<ItemDTO> data对象中看到数据。

我感谢任何帮助。

代码

public class GetLLRD {
Context mContext;

public void post_selected(String json, Context context) {
    new MyAsyncTask().execute(json);
    context = this.mContext;
}

class MyAsyncTask extends AsyncTask<String, Integer, List<ItemDTO>> {


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

      .
      .
      .
      .

            Gson gson = new Gson();
            Type listType = new TypeToken<List<ItemDTO>>() {
            }.getType();
            ArrayList<ItemDTO> data = gson.fromJson(sb.toString(), listType);
      .
      .
      .
      .     


        return null;

    }

    protected void onPostExecute(ArrayList<ItemDTO> result) {

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                new MyAsyncTask().execute();
                System.out.println("The method onPostExcute() in GETLLRD class was invoked  again");
            }
        }, 1*30 * 1000);

        if (result != null) {
            Intent intent = new Intent(mContext, Map.class);
            intent.putExtra("list",result);
            mContext.startActivity(intent); 

        }else{
            Log.e("123", "Avoiding null pointer, the dat is null in the GETLLRD class!!!");
        }

    }

}
}

3 个答案:

答案 0 :(得分:2)

正在调用您的onPostExecute 但是,正如其他人所指出的那样,您在doInBackground中返回null并且没有将数据传递给您的{{1 }}

onPostExecute

答案 1 :(得分:0)

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

  .
  .
  .
  .

        Gson gson = new Gson();
        Type listType = new TypeToken<List<ItemDTO>>() {
        }.getType();
        ArrayList<ItemDTO> data = gson.fromJson(sb.toString(), listType);
  .
  .
  .
  .     


    return data;

}

答案 2 :(得分:0)

doInBackground()而不是

 return null;

DO

 return data;