@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