@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);
}
给我一个return null;
的linter错误:
错误的线程:方法searchNotifyUpdate必须从UI线程调用,当前推断的线程是辅助线程
但是,我在这里看不到问题。是的,searchNotifyUpdate()
用@UiThread
注释是因为AsyncTask.executeOnExecutor
是用这种方法注释的,但这对不受我控制的doInBackground()
不会有任何影响,对吗?< / p>
P.S .:直到最近我才得到这个错误,我认为在更新到Gradle 4.10.1和'com.android.tools.build:gradle:3.3.0'
或更新到Android Studio 3.3之后