无法在 Android Studio 中调试 onPostExecute
Posted
技术标签:
【中文标题】无法在 Android Studio 中调试 onPostExecute【英文标题】:Cannot debug onPostExecute within Android Studio 【发布时间】: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 的执行是否成功? 【参考方案1】:尝试将android.os.Debug.waitForDebugger();
行放入您的onPostExecute()
方法中。这将等待调试器附加到您的单独线程,然后在附加调试器后返回。然后尝试在这条线之后放置一个断点,它应该会命中。
更多信息在这里:http://developer.android.com/reference/android/os/Debug.html#waitForDebugger()
【讨论】:
【参考方案2】:别忘了加上execute()
,否则你实例化了,但不要触发异步任务:
LoadObject(this).execute()
【讨论】:
以上是关于无法在 Android Studio 中调试 onPostExecute的主要内容,如果未能解决你的问题,请参考以下文章
无法在 android 设备上调试应用程序 - Android Studio 2.0
无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException