0

我目前使用扩展的类将一些数据发布到 php webservice AsyncTask

现在我需要进行同步调用,因为我想显示我的应用程序在发送数据后崩溃的默认异常弹出窗口(previousHandler.uncaughtException(t, e))。

我可以禁用上的异步功能AsyncTask吗,或者您有其他建议吗?

这是我当前的代码,在此先感谢:

public void uncaughtException(Thread t, Throwable e) {

    final Writer result = new StringWriter();
    final PrintWriter printWriter = new PrintWriter(result);
    e.printStackTrace(printWriter);
    String stacktrace = result.toString();
    printWriter.close();

    String deviceUuid = Utilities.DeviceUuid(ctx, cr);
    String bluetoothName = Utilities.LocalBluetoothName();

    AsyncTasks.ErrorLogTask logTask = new AsyncTasks.ErrorLogTask(e, bluetoothName, deviceUuid, stacktrace);
    logTask.execute();

    //task wont be complete before this code below runs since its async.

    previousHandler.uncaughtException(t, e);


}
4

2 回答 2

0

我认为您仍然需要捕获异常。我会将调用保留在您的 AsyncTask 中,但会捕获异常。要么使用标志作为返回值,doInBackground要么创建 AsyncTask 的本地变量以用作标志,并onPostExecute检查标志并在必要时显示对话框。

通常,由于存在 ANR 的风险,您不想在主 UI 线程上进行服务器调用。请参阅有关它们的这篇文章:http: //developer.android.com/guide/practices/responsiveness.html

于 2012-07-01T12:11:57.793 回答
0

将您的默认异常弹出窗口放入onPostExecute(). ErrorLogTask当您的任务完成时,该块在主线程中执行。

于 2012-07-01T12:15:20.920 回答