Я сделал следующий пример программы, чтобы проверить, будет ли onPostExecute работать после doInBackground.
В этом случае я понимаю, что doPostExecute работает после doInBackground, используя результат doInBackground, который является строкой ab.
Но после doInBackground, он идет в AsyncTask (@Nullable Looper callbackLooper), который находится в AsyncTask. java.
Я не уверен, почему он не go не выполняет onPostExecute, даже если doInBackground обрабатывается нормально с соответствующей формой для перенаправления в onPostExecute .
Есть ли пропущенные вещи, о которых нужно позаботиться?
public void search(String word){
AsyncSearch as = new AsyncSearch();
as.execute(word);
}
private class AsyncSearch extends AsyncTask<String, Void, String> {
protected String doInBackground(String... word) {
try {
String string = aaa(word[0]);
return string;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
protected void onPostExecute(String string){
System.out.println(string);
//and forward the string to the other method
}
public String aaa(String word) throws IOException {
String ab = word + "test";
return ab;
}
}
На этом этапе, после doInBackground (), как-то вызывается следующее в AsyncTask.
mWorker = new WorkerRunnable<Params, Result>() {
public Result call() throws Exception {
mTaskInvoked.set(true);
Result result = null;
try {
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
//noinspection unchecked
result = doInBackground(mParams);
Binder.flushPendingCommands();
} catch (Throwable tr) {
mCancelled.set(true);
throw tr;
} finally {
postResult(result);
}
return result;
}
};
И на консоли появилась следующая ошибка.
Я не уверен, относится ли это к вышеуказанному явлению.
Не могли бы вы оказать мне некоторую помощь?
Спасибо.