Internetivity ❤ Android

我們可以看到網路上很多偵測連線的方法,官方推薦的方法是:

不過這只是 connectivity 並不是 internetivity 偵測網際網路可用性,常見的需求是要偵測網際網路可用性才對。

偵測網際網路可用性比較正確的做法是 novoda/merlin 或者 pwittchen/ReactiveNetwork 所採用的,在連線改變後,嘗試一些服務即可,像是 ping / ns-lookup / socket connectable 。

而事實上我們可以很簡單寫些片段達成:

internetivityObservable(context)
.subscribeOn(io())
.subscribe { println(it) }

搭配 RxLifecycle 也很簡單的避免 leakage:

internetivityObservable(context)
.compose(bindToLifecycle()) // ADD
.subscribeOn(io())
.subscribe { println(it) }

source: https://github.com/yongjhih/rx-net