2017-02-18 16 views
0

다음 흐름을 고려하십시오.Android에서 앱을 사용하는 중 인터넷에 사용자가 연결할 때 배너 광고를 표시하는 방법은 무엇입니까?

1) 사용자가 기기에 인터넷이 연결되어 있지 않으면 앱을 엽니 다. (배너 광고가 표시되지 않습니다.)

2) 앱을 사용할 때 인터넷에 연결됩니다.

위의 상황에서 내 배너 광고는 인터넷 연결 설정에 자동으로로드되지 않습니다. 2 단계 후에 배너 광고를 표시하고 싶습니다.

가장 좋은 방법은 무엇입니까?

더 자세히 설명하기 위해 배너 광고를 지금 앱에 표시하려면 인터넷 연결이있는 상태에서 앱을 다시 시작해야합니다. 즉, 인터넷 연결없이 앱을 시작하면 배너 광고가 표시되지 않습니다.

+0

을 확인 할 수 있습니다 er 함수는 코딩을 반복하면서 기본 컨트롤 검사를 수행합니다. 당신이 우리에게 말한 방식은 코드에서 약간 지저분한 소리를냅니다. – user7568042

답변

2

이 클래스를 사용하여 인터넷 연결 상태 변경은 인터넷 연결이 광고에 대한 호출을 변경 이제까지

public class NetworkStateReceiver extends BroadcastReceiver { 

protected List<NetworkStateReceiverListener> listeners; 
protected Boolean connected; 

public NetworkStateReceiver() { 
    listeners = new ArrayList<NetworkStateReceiverListener>(); 
    connected = null; 
} 

public void onReceive(Context context, Intent intent) { 
    if(intent == null || intent.getExtras() == null) 
     return; 

    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = manager.getActiveNetworkInfo(); 

    if(ni != null && ni.getState() == NetworkInfo.State.CONNECTED) { 
     connected = true; 
    } else if(intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) { 
     connected = false; 
    } 

    notifyStateToAll(); 
} 

private void notifyStateToAll() { 
    for(NetworkStateReceiverListener listener : listeners) 
     notifyState(listener); 
} 

private void notifyState(NetworkStateReceiverListener listener) { 
    if(connected == null || listener == null) 
     return; 

    if(connected == true) 
     listener.networkAvailable(); 
    else 
     listener.networkUnavailable(); 
} 

public void addListener(NetworkStateReceiverListener l) { 
    listeners.add(l); 
    notifyState(l); 
} 

public void removeListener(NetworkStateReceiverListener l) { 
    listeners.remove(l); 
} 

public interface NetworkStateReceiverListener { 
    public void networkAvailable(); 
    public void networkUnavailable(); 
} 
} 

here 이상 전체 사용량을 볼 때 (그대로 그냥 클래스를 추가) 할 수 있습니다

나 또한 내가 코드를 재 작업 할 필요가 상상 또는 anoth을 구현 this 질문