2012-10-10 4 views
0

네트워크 연결이 끊어졌을 때를 감지 할 방법이 필요합니다. 모바일과 무선 랜 사이의 전환은 실제로 중요하지 않습니다. 연결이 끊어졌을 때 런타임에 감지하는 것입니다.BroadcastReceiver에서 UI 수정

나는 이제 나를 위해 잘 작동하는 몇 가지 코드를 발견했다.

public class ConnectivityReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d(ConnectivityReceiver.class.getSimpleName(), "action: " 
       + intent.getAction()); 
    } 

} 

onReceive() 메소드 내부를 점검하고 싶습니다. 연결이 아직 사용 가능하지 않거나 없습니다.

내가 잃어버린 메시지는 사용자에게 보여주고 싶습니다. 내 활동으로 돌아가는 가장 좋은 방법은 무엇이며 연결이 끊어 졌는가?

답변

2

활성 상태 인 경우에만 네트워크 연결 상태를 추적하려면 ConnectivityReceiver을 내부 중첩 클래스로 Activity에 배치 할 수 있습니다. 이 경우 onResume 메서드에 등록하고 에서 등록을 취소해야합니다. 그러면 다음과 같이 표시됩니다.

public class MyActivity extends Activity { 
    private class ConnectivityReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d(ConnectivityReceiver.class.getSimpleName(), "action: " 
       + intent.getAction()); 
     } 
    } 

    private final BroadcastReceiver receiver = new ConnectivityReceiver(); 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(receiver); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); 
     registerReceiver(receiver, filter); 
    } 
} 
+0

감사합니다. 이 수신기를 어떻게 등록하고 등록을 취소합니까? – user754730

+0

답변을 업데이트했습니다. 메소드 [registerReceiver] http://developer.android.com/reference/android/content/Context.html#registerReceiver (android.content.BroadcastReceiver, android.content.IntentFilter) 및 [unregisterReceiver] (http://developer.android .com/reference/android/content/Context.html # unregisterReceiver (android.content.BroadcastReceiver))를 사용해야합니다. –

+0

완벽한 답변! 고마워! – user754730

1

BroadcastReceiver으로 확장되는 내부 클래스를 가질 수 있으며 동적으로 register 수 있습니다. innterclass (정확히 onRecieve() 메소드)에서 활동에 액세스 할 수 있습니다.

관련 문제