doInBackground方法后不执行onPostExecute?

zkw261123 2017-11-08 02:16:12
我的程序执行完doInBackground方法后不执行onPostExecute?这是为什么???
代码如下:

public class MyAsyncTask extends AsyncTask<String, Void, ArrayList<String>> {

private static final String TAG = "MyAsyncTask";

@Override
protected ArrayList<String> doInBackground(String... params) {
ArrayList<String> paramType = new ArrayList<String>();
ArrayList<String> param = new ArrayList<String>();
paramType.clear();
param.clear();
paramType.add(params[0]);
param.add(params[1]);
return WebServiceConnector.executingMethod(WebServiceConnector.METHOD_GETBASICINFOBYSNO, paramType,param);
}

@Override
protected void onPostExecute(ArrayList<String> result) {
Log.d(TAG,"onPostExecute begin to execute!");
/*改变主线程UI... ...*/
}

}


调用时:

new MyAsyncTask().execute(WebServiceConnector.PARAM_TYPE_SNO,"123456");


我发现onPostExecute()一直没有执行,查了查logcat,发现有两个奇怪的异常被捕捉到,但是我看不懂...
以下是logcat:

com.google.android.googlequicksearchbox:search W/ErrorProcessor: onFatalError, processing error from engine(4)
com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream
at com.google.android.apps.gsa.staticplugins.recognizer.j.a.a(SourceFile:28)
at com.google.android.apps.gsa.staticplugins.recognizer.j.b.run(SourceFile:15)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile:14)
at com.google.android.apps.gsa.shared.util.concurrent.a.bl.run(SourceFile:4)
at com.google.android.apps.gsa.shared.util.concurrent.a.bl.run(SourceFile:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
at com.google.android.apps.gsa.shared.util.concurrent.a.ai.run(SourceFile:6)
Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space.
at com.google.android.apps.gsa.speech.audio.Tee.f(SourceFile:103)
at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2)
at java.io.InputStream.read(InputStream.java:101)
at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:18)
at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile:14) 
at com.google.android.apps.gsa.shared.util.concurrent.a.bl.run(SourceFile:4) 
at com.google.android.apps.gsa.shared.util.concurrent.a.bl.run(SourceFile:4) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
at java.lang.Thread.run(Thread.java:764) 
at com.google.android.apps.gsa.shared.util.concurrent.a.ai.run(SourceFile:6)



MessageQueue: Handler (android.os.Handler) {753dd07} sending message to a Handler on a dead thread
java.lang.IllegalStateException: Handler (android.os.Handler) {753dd07} sending message to a Handler on a dead thread
at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
at android.os.Handler.enqueueMessage(Handler.java:661)
at android.os.Handler.sendMessageAtTime(Handler.java:630)
at android.os.Handler.sendMessageDelayed(Handler.java:600)
at android.os.Handler.post(Handler.java:356)
at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
at android.os.Binder.execTransact(Binder.java:674)


AsyncTask部分的代码我是看了书后自己打出来的,发现错误后我和书上比对了一下,也只是没有重写onProgressUpdate()而已。我这个错误书上也没提到,我想来这里问问不执行onPostExecute()该怎么解决?是不是和以上两个异常有关?
...全文
314 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuhuaijun 2017-11-10
  • 打赏
  • 举报
回复
请把WebServiceConnector中调用的方法贴出来下,不方便的话,添加一些LOG看看这个方法是否有异常发生?
MadFrogs 2017-11-10
  • 打赏
  • 举报
回复
WebServiceConnector.executingMethod 这个方法里最前面打印一句log,最后打印一句log看看走完没有,确定一下你的异常点。
zkw261123 2017-11-09
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
肯定有关撒, 都异常了. 有些正常流程就走不了了. 所以你说的那个函数未被调用.
有关的话怎么解决?我查了这两个异常,好像和onPostExecute()这个方法没有什么关联
xiaohuh421 2017-11-09
  • 打赏
  • 举报
回复
肯定有关撒, 都异常了. 有些正常流程就走不了了. 所以你说的那个函数未被调用.
-天宇 2017-11-09
  • 打赏
  • 举报
回复
这2个方法和onPostExecute没有关联,是你doInBackground里面的代码出异常了,导致接下来的线程终止执行了,也就是没执行onPostExecute 你只要去查为什么会发生这异常

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧