private void loadModels() {
        if (isDataLoading.get()) return;
        isDataLoading.set(true);
        disposables.add(Single.create((SingleOnSubscribe<List<AppListModel>>) emitter -> emitter.onSuccess(getSmartFreezeApps())).flatMapObservable((Function<List<AppListModel>, ObservableSource<AppListModel>>) Observable::fromIterable).filter(listModel -> {
            String query = queryText.get();
            return TextUtils.isEmpty(query) || appLabelSearchFilter.matches(query, listModel.appInfo.getAppLabel());
        }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).doOnSubscribe(disposable -> listModels.clear()).subscribe(listModels::add, Rxs.ON_ERROR_LOGGING, () -> isDataLoading.set(false)));
    }
Null means we load all pkgs
android/app/src/main/java/now/fortuitous/thanos/power/SmartFreezeAppsViewModel.java