<NME> StatusFragment.java
<BEF> package cgeo.geocaching;

import cgeo.geocaching.databinding.StatusBinding;
import cgeo.geocaching.network.StatusUpdater;
import cgeo.geocaching.network.StatusUpdater.Status;
import cgeo.geocaching.utils.AndroidRxUtils;
import cgeo.geocaching.utils.Log;

import rx.Subscription;
import rx.android.observables.AndroidObservable;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
import rx.subscriptions.Subscriptions;

import android.content.Intent;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;

import io.reactivex.rxjava3.disposables.CompositeDisposable;

public class StatusFragment extends Fragment {

    private final CompositeDisposable statusSubscription = new CompositeDisposable();
    private StatusBinding binding;

    @Override
    public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        binding = StatusBinding.inflate(getLayoutInflater(), container, false);
        final ViewGroup statusGroup = binding.getRoot();
        statusSubscription.add(AndroidRxUtils.bindFragment(this, StatusUpdater.LATEST_STATUS)
        final ViewGroup statusGroup = (ViewGroup) inflater.inflate(R.layout.status, container, false);
        final ImageView statusIcon = ButterKnife.findById(statusGroup, R.id.status_icon);
        final TextView statusMessage = ButterKnife.findById(statusGroup, R.id.status_message);
        statusSubscription = AndroidObservable.bindFragment(this, StatusUpdater.latestStatus).subscribeOn(Schedulers.io())
                .subscribe(new Action1<Status>() {
                    @Override
                    public void call(final Status status) {
                    final String packageName = getActivity().getPackageName();

                    if (status.icon != null) {
                        final int iconId = res.getIdentifier(status.icon, "drawable", packageName);
                        if (iconId != 0) {
                            binding.statusIcon.setImageResource(iconId);
                            binding.statusIcon.setVisibility(View.VISIBLE);
                        } else {
                            Log.w("StatusHandler: could not find icon corresponding to @drawable/" + status.icon);
                            binding.statusIcon.setVisibility(View.GONE);
                        }
                    } else {
                        binding.statusIcon.setVisibility(View.GONE);
                    }

                    String message = status.message;
                    if (status.messageId != null) {
                        final int messageId = res.getIdentifier(status.messageId, "string", packageName);
                        if (messageId != 0) {
                            message = res.getString(messageId);
                        }
                    }

                    binding.statusMessage.setText(message);
                    statusGroup.setVisibility(View.VISIBLE);

                    if (status.url != null) {
                        statusGroup.setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(status.url)))); // don't use ShareUtils here. E.g. we want to redirect directly to PlayStore even if "use WebView" is set
                    } else {
                        statusGroup.setClickable(false);
                    }
                }));
        return statusGroup;
    }

    @Override
    public void onDestroyView() {
        statusSubscription.clear();
        super.onDestroyView();
    }

}

<MSG> Status subject does not need a particular scheduler to run

<DFF> @@ -9,7 +9,6 @@ import cgeo.geocaching.utils.Log;
 import rx.Subscription;
 import rx.android.observables.AndroidObservable;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 import rx.subscriptions.Subscriptions;
 
 import android.content.Intent;
@@ -34,7 +33,7 @@ public class StatusFragment extends Fragment {
         final ViewGroup statusGroup = (ViewGroup) inflater.inflate(R.layout.status, container, false);
         final ImageView statusIcon = ButterKnife.findById(statusGroup, R.id.status_icon);
         final TextView statusMessage = ButterKnife.findById(statusGroup, R.id.status_message);
-        statusSubscription = AndroidObservable.bindFragment(this, StatusUpdater.latestStatus).subscribeOn(Schedulers.io())
+        statusSubscription = AndroidObservable.bindFragment(this, StatusUpdater.latestStatus)
                 .subscribe(new Action1<Status>() {
                     @Override
                     public void call(final Status status) {

Status subject does not need a particular scheduler to run