onPostExecute не будет вызываться, хотя doInBackground был обработан и завершился нормально - PullRequest
0 голосов
/ 20 марта 2020

Я сделал следующий пример программы, чтобы проверить, будет ли 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;
            }
        };

И на консоли появилась следующая ошибка. enter image description here

Я не уверен, относится ли это к вышеуказанному явлению.

Не могли бы вы оказать мне некоторую помощь?
Спасибо.

...