@Override
    public SearchResult loadInBackground() {
        loading = true;
        try {
            if (search == null) {
                search = runSearch();
            } else {
                // Unless we make a new Search the Loader framework won't deliver results. It doesn't do equals only identity
                search = new SearchResult(search);
            }
        } catch (final NoConnectorException ignored) {
            final Activity activity = activityRef.get();
            if (activity != null) {
                activity.runOnUiThread(() -> {
                    ViewUtils.showToast(activity, R.string.warn_no_connector);
                    activity.finish();
                });
            }
        } catch (final Exception e) {
            Log.e("Error in Loader ", e);
        }
        loading = false;
        if (search == null) {
            search = new SearchResult();
        }
        return search;
    }
Run {@link SearchResult#parallelCombineActive(Collection, Function)} if there is at least one active connector
in <tt>connectors</tt>, and throw <tt>NoConnectorException</tt> otherwise.

@param connectors a collection of connectors
@param func       a function to apply to every connector
@param <C>        the type of connectors
@return the result of {@link SearchResult#parallelCombineActive(Collection, Function)} if there is at least one
active connector
main/src/main/java/cgeo/geocaching/loaders/AbstractSearchLoader.java