우찬쓰 개발블로그
안드로이드 네트워크 상태 감지 리스너 설정하기 본문
반응형
보통 메인엑티비에서 와이파이의 현재 연결 상태를 체크할 수 있도록 해달라는 요구사항이 들어올때가 있다.
백그라운드의 서비스단에서 처리해달라고하면 골치아파지지만, 단순히 엑티비티 내부에서 처리하려면 간단하다.
간단하게 사용할 수 있도록 클래스를 하나 직접 만들어 보자.
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, {
//연결됨
}, {
//연결끊김
})
반응형
'안드로이드 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 spinner에서 navigation bar hide 유지하기 (0) | 2019.06.15 |
---|---|
안드로이드 코드상으로 폰트 적용 (0) | 2019.06.14 |
안드로이드 레이아웃 이동 애니메이션 구현하기 (0) | 2019.06.07 |
안드로이드(자바, 코틀린 포함) 문자열 언어 감지하기 (0) | 2019.05.26 |
안드로이드 retrofit2 + rxjava2 로 파일 다운로드 progress 표시하기 (0) | 2019.05.22 |
Comments