우찬쓰 개발블로그

안드로이드 네트워크 상태 감지 리스너 설정하기 본문

안드로이드/안드로이드 개발

안드로이드 네트워크 상태 감지 리스너 설정하기

이우찬 2019. 6. 10. 15:40
반응형

보통 메인엑티비에서 와이파이의 현재 연결 상태를 체크할 수 있도록 해달라는 요구사항이 들어올때가 있다.

 

백그라운드의 서비스단에서 처리해달라고하면 골치아파지지만, 단순히 엑티비티 내부에서 처리하려면 간단하다.

 

간단하게 사용할 수 있도록 클래스를 하나 직접 만들어 보자.

class ConnectionStateMonitor(val activity: Activity, val onConnected: () -> Unit, val onDisconnected: () -> Unit) : NetworkCallback() {

    private val networkRequest: NetworkRequest = NetworkRequest.Builder().build()

    init {
        registerConnectionMonitor(activity)
    }

    private fun registerConnectionMonitor(context: Context) {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        connectivityManager.registerNetworkCallback(networkRequest, this)
    }

    override fun onAvailable(network: Network) {
        super.onAvailable(network)
        activity.runOnUiThread {
            onConnected()
        }
    }

    override fun onLost(network: Network?) {
        super.onLost(network)
        activity.runOnUiThread {
            onDisconnected()
        }
    }
}

 

클래스를 생성하자마자 고차함수로 콜백을 받을 수 있도록 설정하였다.

 

실제 사용할때는 다음처럼 간단하게 사용하면 된다.

 

ConnectionStateMonitor(this, {
    //연결됨
}, {
    //연결끊김
})

 

 

반응형
Comments