匿名内部AsyncTask的WrongThread linter错误

时间:2019-01-18 16:29:55

标签: android android-studio android-lint

@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之后

0 个答案:

没有答案