rx receivers
发布日期:2021-06-29 15:25:23 浏览次数:3 分类:技术文章

本文共 1430 字,大约阅读时间需要 4 分钟。

使用:

RxBroadcastReceiver.create(context, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION))  .subscribe((Action1) (intent) -> { textView.setText(intent.toString()); });
或者一些内部实现的方法

RxTelephonyManager.phoneStateChanges(context).subscribe();RxWifiManager.wifiStateChanges(context).subscribe();RxWifiManager.networkStateChanges(context).subscribe();RxWifiManager.supplicantConnectionChanges(context).subscribe();RxWifiManager.supplicantStateChanges(context).subscribe();

原理说明:

非常简单,自定义创建了一个观测者即可。

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 broadcastReceiver = new BroadcastReceiver() {
          @Override public void onReceive(Context context, Intent intent) {
            subscriber.onNext(intent);
          }
        };
        context.registerReceiver(broadcastReceiver, intentFilter);
        subscriber.add(Subscriptions.create(new Action0() {
          @Override public void call() {
            context.unregisterReceiver(broadcastReceiver);
          }
        }));
      }
    });
  }
}

官网地址:

https://github.com/luxiaoming/rx-receivers

转载地址:https://codegg.blog.csdn.net/article/details/51366156 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:RxAndroid 常见用法
下一篇:Rx Preferences 简单整理

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月02日 19时02分50秒