【问题标题】:Cannot debug onPostExecute within Android Studio无法在 Android Studio 中调试 onPostExecute
【发布时间】:2016-04-16 07:52:00
【问题描述】:

我正在尝试在 Android Studio 中调试 AsyncTask,但是调试器不允许我进入 onPostExecute() 方法,我不知道为什么。我确信它正在执行,因为我放了一个显示的 Toast,但是我想在那里调试,但由于某种原因我不能。这是一个原因吗?

private class LoadObject extends AsyncTask<Void, Void, Void> {

    private ProgressDialog dialog;
    private Context context;
    String postAddress;


    public LoadObject(Context context) {
        this.context = context;
        dialog = new ProgressDialog(context);
    }

    @Override
    protected void onPreExecute() {
        dialog.setMessage("Loading...");
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    }

    @Override
    protected void onPostExecute(Void result) {
        Toast.makeText(context, "OnPostExecute", Toast.LENGTH_SHORT).show();

        functionToExecute();

        if(dialog!=null && dialog.isShowing()){
            dialog.dismiss();
        }

        bLoaded = true;
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            postApi.postAPI(postAddress);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
}

【问题讨论】:

  • 你是先去 onPreExecute 然后再去 doInBackground 吗?
  • 是的,我愿意。这两个我也可以调试。但不是 onPostExecute
  • doInBackground 的执行是否成功?

标签: android debugging android-studio android-asynctask


【解决方案1】:

尝试将android.os.Debug.waitForDebugger(); 行放入您的onPostExecute() 方法中。这将等待调试器附加到您的单独线程,然后在附加调试器后返回。然后尝试在这条线之后放置一个断点,它应该会命中。

更多信息在这里:http://developer.android.com/reference/android/os/Debug.html#waitForDebugger()

【讨论】:

    【解决方案2】:

    别忘了加上execute(),否则你实例化了,但不要触发异步任务: LoadObject(this).execute()

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多