Bolts Framework: onSuccess вносит изменения в пользовательский интерфейс / основной поток - PullRequest
0 голосов
/ 12 апреля 2019

Можно ли отобразить сообщение или внести изменения в поток пользовательского интерфейса после завершения выполнения задачи callInBackground?

Примерно так:

Task.callInBackground(new Callable<String>() {
            @Override
            public String call() {


                for(int i=0; i<3; i++){
                    Log.i("I=", String.valueOf(i));

                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

                String obj = "";
                return null;
            }
        }).onSuccess(new Continuation<String, Object>() {
            @Override
            public Object then(Task<String> task) throws Exception {
                Log.i("I=", "Counter complete");

                Toast.makeText(MainLoanMemberActivity.this, "Finished", Toast.LENGTH_SHORT).show();
                btnAgriLoan.setText("LOL");
                return null;
            }
        });

В данный момент не отображается сообщение Toast и также не происходит сбоя.

Ищем эквивалент OnPostExecute AsyncTask в Bolts Framework, где можно добавлять изменения в пользовательский интерфейс.

1 Ответ

0 голосов
/ 12 апреля 2019

Не понял, что есть типы EXECUTOR, которые вы можете упомянуть с каждой вспомогательной функцией, например: (Task.UI_THREAD_EXECUTOR)

Task.callInBackground(new Callable<String>() {
            @Override
            public String call() {
                for(int i=0; i<3; i++){
                    Log.i("I=", String.valueOf(i));
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                String obj = "";
                return null;
            }
        }).onSuccess(new Continuation<String, Void>() {
            public Void then(Task<String> object) throws Exception {
                Toast.makeText(MainLoanMemberActivity.this, "Finished", Toast.LENGTH_SHORT).show();
                btnAgriLoan.setText("LOL");
                return null;
            }
        }, Task.UI_THREAD_EXECUTOR);

Документы помогли!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...