나는 모든 안드로이드 개발자가 언젠가는 직면하는 매우 일반적인 문제가 있습니다. 웹 서버에서 데이터를로드하는 앱을 만들고 있습니다. 따라서 인터넷 연결이 사용되고 있습니다. 하지만 서버를 호출하기 전에 인터넷 연결을 확인해야합니다. 나는 ConnectivityManager를 사용하여 그것을하고있다.인터넷 연결이 끊어지면이 활동을 계속 유지하는 방법 (다른 활동으로 가기보다는)?
내 문제는 실제로 인터넷 연결이 끊어지면 사용자에게 알려주는 것입니다. 내가 잃어버린 인터넷 연결에 대해 알리는 AlertDialog 상자를 사용자에게 보여주고 싶습니다. 이제 문제는 사용자가 버튼을 클릭하고 새 활동을 시작해야하는 경우 (서버에서 데이터를로드하는 경우), 호출 활동의 대화 상자를 표시 할 수 없다는 것입니다. 인터넷 이용이 불가능할 경우 다른 활동으로 이동하고 싶지 않습니다. 나는이 활동을 계속하고 싶다.
이 활동에는 많은 단추가 있으며 단추를 클릭하면 다른 활동으로 이동할 수 있습니다. 인터넷이 없다면 다른 활동을 열지 말고이 활동에 대해서만 대화 상자를 보여 주면됩니다. 이를 수행하는 한 가지 방법은 모든 버튼의 클릭 (onClick 메서드에서)을 확인한 다음 사용자에게 손실 된 인터넷 연결을 알리는 것입니다. 그러나 이것은 많은 활동과 모든 활동에 많은 버튼이 있기 때문에 나에게는 매우 바쁠 것입니다.
인터넷을 사용할 수없는 경우 다음 활동으로 이동하지 않고이 활동이 남아 있고 새로운 활동이 시작되고 발견 된 후 사용자에게 대화 상자를 표시하여 일반적으로 효율적인 방법을 찾을 수 있습니까? 이 문제를 해결하기위한 최선의 방법은 무엇입니까? 도와주세요. 나는 지난 2 일 동안 이것에 붙어있다. 고맙습니다. 여기
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.backIcon:
navigateMenuScreen(view);
break;
}
}
는 내가 인터넷 연결을 확인하는 방법 (그리고 그것을 잘 작동) :
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) {
}
}
내 질문에 내가 확인해야 할 것입니다 :
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo!=null && networkInfo.isConnected()) {
return true;
} else {
return false;
}
이 탐색 방법 모든 탐색 방법의 인터넷 연결 (위의 다른 방법이 있습니다) 또는 더 좋은 방법이 있습니까?
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
// do application-specific task(s) based on the current network state, such
// as enabling queuing of HTTP requests when currentNetworkInfo is connected etc.
}
};
하는 것입니다
가능한 솔루션에<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
코드가 없으면 우리는 도움이 안됩니다. 코드를 보여주십시오. –
또한 짧게 유지하십시오. 응답을받을 수있는 기회가 더 있습니다 – nandeesh
여기에서 문제는 'Activity1'에 대한 확인을 수행하고 연결이 있는지 확인하고 'Activity2'를 실행하면 문제가 계속 될 것이라는 보장이 없습니다. 'Activity2'가 연결을 사용하기 시작할 때까지 거기있을 거라고 확신하지만 확실하지는 않습니다. – Basic