0

我在 Android 上有一个简单的 AsyncTask 类,我注意到我总是将肯定的结果传递给 onPostExecute 方法,即使我知道 doInBackground 返回的是否定的。

请看一下我的代码。我在调试时运行此代码,并确认我落在异常块上并返回 false。但它没有反映在 onPostExecute 上。

public class AsyncSendOSCTask extends AsyncTask<OSCMessage, Void, Boolean> {

private OSCPortOut oscPortOut;
private Activity activity;

public AsyncSendOSCTask(Activity activity, OSCPortOut oscPortOut) {
    this.activity = activity;
    this.oscPortOut = oscPortOut;
}   

@Override
protected Boolean doInBackground(OSCMessage... message) {
    try {

        this.oscPortOut.send(message[0]);
        return Boolean.TRUE;
    }
    catch(Exception exp) {
        return Boolean.FALSE;
    }
}



@Override
protected void onPostExecute(final Boolean result) {
    if(!result.booleanValue()) { // this is always true!!!          
        Toast.makeText(this.activity, "Error Sending OSC", Toast.LENGTH_SHORT).show();
    }
}

}

我在这里想念什么?谢谢你的帮助...

4

1 回答 1

0

如果您的问题仍然存在:

请试试这个:

公共类 AsyncSendOSCTask 扩展 AsyncTask {

私有 OSCPortOut oscPortOut;私人活动活动;布尔示例布尔;//添加示例bool

公共 AsyncSendOSCTask(活动活动,OSCPortOut oscPortOut){ this.activity = 活动;this.oscPortOut = oscPortOut; }

@Override protected Boolean doInBackground(OSCMessage... message) { try {

    this.oscPortOut.send(message[0]);
    examplebool=true; // added
    return(examplebool); //edited
}
catch(Exception exp) {
    examplebool=false; //added
    return(examplebool); //edited
} }

@Override protected void onPostExecute(final Boolean result) { if(!result.booleanValue()) { // 这总是正确的!!!
Toast.makeText(this.activity, "错误发送 OSC", Toast.LENGTH_SHORT).show(); } }

它是快速手工编码且未经测试的,您也可以更改 onPostExecute。

于 2013-01-31T23:03:34.417 回答