ReactiveNetwork
2016-07-20 15:50
381 查看
ReactiveNetwork
类别: 网络 (Networking)打分: ★★★★★
更新: 2015-08-14 12:28
大小: 65 kb
开发环境: Android Studio
浏览: 620 次
下载: 182 次
项目地址: https://github.com/pwittchen/ReactiveNetwork
RxJava,wifi,网络
下载
收藏
pwittchen / ReactiveNetwork
Android library listening network connection state and Internet connectivity with RxJava Observables64378
介绍:
ReactiveNetwork是一个监听网络连接状态与WiFi信号强度的库,使用RxJava Observable实现。RxJava 1.0.+ 与 RxAndroid 1.0.+,min sdk version = 9运行效果:
使用说明:
公共API中有两个RxJava Observable:Observable<ConnectivityStatus> observeConnectivity(final Context context) Observable<List<ScanResult>> observeWifiAccessPoints(final Context context)
监听连接状态
ConnectivityStatus可以有以下值:public enum ConnectivityStatus { WIFI_CONNECTED("connected to WiFi"), MOBILE_CONNECTED("connected to mobile network"), OFFLINE("offline"); ... }
我们可以通过observeConnectivity(context) 方法观察ConnectivityStatus,如下:
new ReactiveNetwork().observeConnectivity(context) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) ... // anything else what you can do with RxJava .subscribe(new Action1<ConnectivityStatus>() { @Override public void call(ConnectivityStatus connectivityStatus) { // do something with connectivityStatus } });
我可以通过RxJava的filter(...) 方法响应状态的变化。isEqualTo(final ConnectivityStatus... statuses) 和 isNotEqualTo(final ConnectivityStatus... statuses)方法位于ConnectivityStatus中。
new ReactiveNetwork().observeConnectivity(context) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .filter(ConnectivityStatus.isEqualTo(ConnectivityStatus.WIFI_CONNECTED)) .subscribe(new Action1<ConnectivityStatus>() { @Override public void call(ConnectivityStatus connectivityStatus) { // do something with connectivityStatus, which will be WIFI_CONNECTED } });
监听WiFi接入点
我们可以通过observeWifiAccessPoints(context) 方法监听WiFi接入点。每次WiFi接入点信号强度发生改变的时候,Subscriber都会被调用(通常发生在用户移动设备的时候)。我们可以如下操作:new ReactiveNetwork().observeWifiAccessPoints(context) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) ... // anything else what you can do with RxJava .subscribe(new Action1<List<ScanResult>>() { @Override public void call(List<ScanResult> scanResults) { // do something with scanResults } });
下载
可以通过Maven添加依赖:<dependency> <groupId>com.github.pwittchen</groupId> <artifactId>reactivenetwork</artifactId> <version>0.0.1</version> </dependency>
或者通过Gradle:
dependencies { compile 'com.github.pwittchen:reactivenetwork:0.0.1' }
相关代码
okhttp
RxAndroid
rx-android-architecture
RxJava-Android-Samples
RxWeather
相关文章推荐
- React Native之调用安卓原生控件
- React Native
- React Native 高质量学习资料汇总
- React Native 开发之 (07) 常用组件-View
- React Native开发android应用
- 从零开始的 React 组件开发之路 (一):表格篇
- React Native(Mac篇)
- React-native报错ERROR Watcher took too long to load解决方法
- ReactNative 仿网易新闻UI Demo
- ReactNative Demo - 仿携程UI Demo
- ReactNative Demo -SearchInput
- ReactNative Demo - Navigator 使用
- ReactNative Demo - NavigationView 使用
- ReactNative Demo - ImageVIew 使用
- ReactNative Demo - Dimensions 的使用
- React 开源组件笔记
- React Native 编译命令
- 使用 webpack + react + redux + es6 开发组件化前端项目
- React 应用的性能优化思路
- 使用c++简单实现reactor模式