package com.f2prateek.rx.receivers; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.support.annotation.CheckResult; import android.support.annotation.NonNull; import rx.Observable; import rx.Subscriber; import rx.functions.Action0; import rx.subscriptions.Subscriptions; import static com.f2prateek.rx.receivers.internal.Preconditions.checkNotNull; public final class RxBroadcastReceiver { private RxBroadcastReceiver() { throw new AssertionError("no instances"); } /** TODO: docs. */ @CheckResult @NonNull // public static Observable<Intent> create(@NonNull final Context context, @NonNull final IntentFilter intentFilter) { checkNotNull(context, "context == null"); checkNotNull(intentFilter, "intentFilter == null"); return Observable.create(new Observable.OnSubscribe<Intent>() { @Override public void call(final Subscriber<? super Intent> subscriber) { final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { subscriber.onNext(intent); } }; context.registerReceiver(receiver, intentFilter); subscriber.add(Subscriptions.create(new Action0() { @Override public void call() { context.unregisterReceiver(receiver); } })); } }); } }