私は非常に一般的な問題を抱えており、すべての Android 開発者がいつか直面すると思います。Webサーバーからデータをロードするアプリを作成しています。そのため、インターネット接続が使用されています。ただし、サーバーを呼び出すたびに、インターネット接続を確認する必要があります。私は ConnectivityManager を使用してそれを行っていますが、動作します。
私の問題は、実際には、インターネット接続が失われた場合にユーザーに通知することです。インターネット接続が失われたことを知らせる AlertDialog ボックスをユーザーに表示したいと考えています。問題は、ユーザーがボタンをクリックして新しいアクティビティを開始する必要がある場合(サーバーからデータをロードする)、呼び出し元のアクティビティでダイアログボックスを表示できないことです。ここでの問題は、インターネットが利用できない場合、他のアクティビティに移動したくないということです。このまま活動を続けていきたいです。
このアクティビティには多くのボタンがあり、それらをクリックすると、ユーザーはさまざまなアクティビティに移動できます。私が望むのは、インターネットが利用できない場合は他のアクティビティを開かず、このアクティビティのダイアログ ボックスのみを表示することだけです。これを行う 1 つの方法は、(onClick メソッドで) すべてのボタンのクリックをチェックし、インターネット接続が失われたことをユーザーに通知することです。しかし、多くのアクティビティがあり、すべてのアクティビティに多くのボタンがあるため、これは私にとって非常に忙しいかもしれません.
このアクティビティが残っていて、新しいアクティビティが開始されているかどうかを確認するための一般的で効率的な方法はありますか?それを見つけた後、インターネットが利用できない場合に次のアクティビティに移動するのではなく、ユーザーにダイアログ ボックスを表示します.最高のものは何ですか?この問題を処理するためのプラクティス。私を助けてください。私は過去2日間これにこだわっています。事前にサンクス。
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.backIcon:
navigateMenuScreen(view);
break;
}
}
インターネット接続を確認する方法は次のとおりです(正常に動作します):
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo!=null && networkInfo.isConnected()) {
return true;
} else {
return false;
}
これはナビゲーション方法です:
public void navigateMenuScreen(View view){
try {
Intent loginIntent = new Intent(view.getContext(), MenuActivity.class);
startActivityForResult(loginIntent, 0);
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
} catch(Exception ex) {
}
}
私の質問は、すべてのナビゲーション方法でインターネット接続を確認する必要がありますか (上記のような方法は他にもあります)、それとももっと良い方法がありますか?