2016-05-05 21 views
0

インターネット接続があるかどうかをチェックします。oncreate()メソッドでこの機能を呼び出しています。アプリを起動するとインターネットに接続できません。ボタンを押したときに、私はアプリケーションを閉じます。インターネット接続がダウンした後、ユーザーがアプリを起動した後、アラートが表示されなくなりました!質問は、インターネットを常時チェックする機能を呼び出す場所ですアプリケーションを起動した後でさえ、2回、oncreate()とonresume()メソッドを呼び出すのは大丈夫ですか?アンドロイドチェックインターネット接続に最適な場所

private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 
+0

ネットワークコールを行う前にネットワークチェックを追加してください。 APIからデータを取得する前に言ってください。 – Krishna

+0

この場合、http応答コードを確認する必要があります。一定時間後にhttpリクエスト中にインターネット接続がダウンすると、応答コードが取得されます。あなたはあなたが何をするかを決めるのは応答コードに依存します。最も確からしい接続の応答コードは503です。 – Masum

+0

期待された答えではありません.... –

答えて

0

あなたが求めているように聞こえるのは、アプリの実行中に接続の変化を監視するための方法です。

これは一般的な問題であり、難題に対処するためにAndroidフレームワーク内に既に存在する単純な解決策があります。

私は最も簡単な解決策は、ブロードキャスト受信機を利用してConnectivityManagerからのブロードキャストを聞くことだと思います。 Androidデベロッパー参照"Determining and Monitoring the Connectivity Status"から:

ConnectivityManagerは、接続の詳細が変更された時はいつでもCONNECTIVITY_ACTION( "android.net.conn.CONNECTIVITY_CHANGE")アクションをブロードキャストします。マニフェストにブロードキャストレシーバを登録して、これらの変更をリッスンし、それに応じてバックグラウンド更新を再開(または中断)することができます。

提供されたリンクにはさらに多くの情報があります。あなたの場合、もちろん、バックグラウンドアップデートを管理していないかもしれませんが、解決される根本的な問題は同じです。

関連する問題