序文
Androidの開発者は、多くの場合、シナリオは、このような演奏のようにネットワークの変更を監視する必要が発生した、例えば、今日のAndroidNetworkWatcher持つようにネットワークは、ネットワークへのアクセスを要求します持ち去ら。
プロジェクトアドレス
AndroidNetworkWatcher:github.com/xiong-it/An...
技術的な原則
主な変更点は、ブロードキャストネットワークに耳を傾けることで、ネットワークの変更は、ネットワークの変更を通知したときに、ビジネス層のコードを呼び出す、カプセル化、および注釈は、ランタイムを定義しています。
使い方
いないリモートのGradle依存により、jcenterするアップロードされませんので、読者は自分のローカルソースが依存ダウンロード、または参照元、独自のパッケージすることができます。
- アプリケーションの初期化ウォッチャーには:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
NetworkStateWatcher.getDefault().init(this);
}
}
复制代码
- 活動の例に登録オブザーバー
@Override
protected void onStart() {
super.onStart();
// 注册网络监听,传入Object类型参数
NetworkStateWatcher.getDefault().registerObserver(this);
}
复制代码
- 活動の例にキャンセルオブザーバー
@Override
protected void onStop() {
super.onStop();
// 注销网络监听,传入Object类型参数
NetworkStateWatcher.getDefault().unRegisterObserver(this);
}
复制代码
-
ネットワークの変化の関数の定義を受け取る(2つの方法)
4.1最初:すべてのネットワークの変更に耳を傾けます
/** * 网络发生变化 * * @param type 网络类型 */ @NetworkStateChanged(notifyOnAppStart = false) void onNetworkStateChanged(int type) { switch (type) { case NetworkTypeEnum.NETWORK_2G: case NetworkTypeEnum.NETWORK_3G: case NetworkTypeEnum.NETWORK_4G: // 切换到移动网络 break; case NetworkTypeEnum.NETWORK_WIFI: // 切换到wifi break; case NetworkTypeEnum.NETWORK_NO: // 断网 break; } } 复制代码
4.2秒:特定のネットワーク変更を監視
// 监听网络切换到wifi @OnNetworkTypeChangedTo(type = NETWORK_WIFI) void onWifiConnected() { Toast.makeText( this, "NetworkStateChanged>>>WIFI", Toast.LENGTH_SHORT).show(); } // 监听网络切换到移动网络 @OnNetworkTypeChangedTo(type = NetworkTypeEnum.NETWORK_MOBILE) void onMobileNetworkConnected() { Toast.makeText(this, "NetworkStateChanged>>>Mobile networks", Toast.LENGTH_SHORT).show(); } 复制代码
-
あなたはネットワーク監視アプリ、すなわちonDestroyアプリスタック方式活動活動のメインインタフェースにおけるネットワーク監視アプリの最後の停止を終了すると、libには、ブロードキャストネットワークに耳を傾ける停止償却されます。
@Override protected void onDestroy() { super.onDestroy(); // 在app主界面/栈中最后一个Activity停止网络监听 NetworkStateWatcher.getDefault().stopWatch(); } 复制代码
エピローグ
無駄な技術、ビューア、注釈、反射、背の高いものにラジオ受信機。何よりも、それはあなたと私を容易にするために、ビジネス層のコードを合理化することができます。AndroidNetworkWatcher:github.com/xiong-it/An ...
// TODO
- Jcenterは、リモートのGradleの依存促進するために、倉庫にアップロード
- さらにサービスコードまたはtranformの使用を簡素化する傾向
- コレクション発行意見
- 議論へようこそ交換