

AndroidStudioにてWi-Fiを接続しているときに画面遷移をしているのですが、読み込み速度が遅く困っています。  
onResumeはActivityが前面に出た「とき」なので、読み込み速度が遅いのかなと思っているのですが、どうすればWi-
Fiを切った瞬間に素早く画面遷移するのか、わからないでいるのでご教授お願い致します。

目的  
Wi-Fiの接続を切ったときにエラー画面に遷移させる。

現在の状況  
目的自体は達成しているのだがWi-Fiを切ったときにエラー画面に行くまでの速度が遅い（Wi-Fiを切った後に何秒か待つか、画面を横にしなくてはならない）

参考にしたurl  
<https://kokufu.blogspot.jp/2016/12/android-wi-fi-access-point_3.html>

お願い致します。

[code]

    public class WifiConnectionWatcher extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
                NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                switch (info.getState()) {
                    case DISCONNECTED:
                        Intent intent1 = new Intent(context, ErrorActivity.class);
                        intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(intent1);
                        break;
                    case SUSPENDED:
                        break;
                    case CONNECTING:
                        Intent intent2 = new Intent(context,AirportActivity.class);
                        intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(intent2);
                        break;
                    case CONNECTED:
                        break;
                    case DISCONNECTING:
                        break;
                    case UNKNOWN:
                        break;
                    default:
                        break;
                }
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2017-06-26T04:51:04.890
35888
2017-06-26T09:53:22.523
2017-06-26T09:53:22.523
20272
23801
question
android java
Wi-Fi接続を切ったときに画面遷移


`BroadcastIntent`を受け取って、の実装を考えている場合、即応性を求めることは困難です。  
例えば１００個のアプリケーションが同じ種類の`BroadcastIntent`の受け取りを設定している場合、いつ自身のアプリケーションに対して`BroadcastIntent`が配信されるかわかりません。  
（つまり受け取るアプリケーションが多くなるほど、配信されるのが遅くなるということが考えられます。また逆に端末の状態に依存して早くなるということも考えられます。）

即応性を求めるのであれば`ConnectivityManager`の[registerNetworkCallback](https://developer.android.com/reference/android/net/ConnectivityManager.html#registerNetworkCallback\(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback\))を利用して直接システムサービスからの変更を受け取る実装の方が良いかと思います。

* * *

**補足**  
通知される保証はありませんが、現実装から少しでも早く動作させたいのであれば、`DISCONNECTED`ではなく`DISCONNECTING`で処理させると良いかもしれません。


CC BY-SA 3.0
2017-06-26T09:16:14.597
35895
2017-06-26T09:16:14.597
20272
35888
answer