Ошибка LrongThread linter для анонимного внутреннего AsyncTask - PullRequest
0 голосов
/ 18 января 2019
@UiThread
public void searchNotifyUpdate() {
    final String queryInput = searchView.getQuery().toString();
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... voids) {
            synchronized (_itemMutex) {
                _currItems = searchFunction(_allItems, queryInput);
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void v) {
            notifyDataSetChanged();
        }
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}

выдает ошибку linter для return null;:

WrongThread: метод searchNotifyUpdate должен вызываться из потока пользовательского интерфейса, в настоящее время предполагаемый поток является рабочим потоком

Однако я не вижу здесь проблемы.Да, searchNotifyUpdate() помечено @UiThread, потому что AsyncTask.executeOnExecutor помечено таким образом, но это не должно иметь никакого эффекта для doInBackground(), который в любом случае не находится под моим контролем, не так ли?


PS: я не получил эту ошибку до недавнего времени, я думаю, после обновления до Gradle 4.10.1 и 'com.android.tools.build:gradle:3.3.0' или после обновления до Android Studio 3.3

...