일단 매니패스트입니다
<receiver android:name=".ui.receiver.NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
그리고 NetworkChangeReceiver Class 입니다
class NetworkChangeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val connMgr = context?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = connMgr.activeNetworkInfo
val isConnected: Boolean? = activeNetwork?.isConnected
if(isConnected == null) {
Timber.d("Test Checked is Connected null ")
} else {
Timber.d("Test Checked Network is Connected !! ")
}
}
}
여기서 baseApplication 또는 MainHomeFragment 에서
val filter: IntentFilter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
val networkChangeReceiver = NetworkChangeReceiver()
// 브로드캐스트 리시버 받는부분 ( 네트워크 )
getActivity().registerReceiver(networkChangeReceiver, filter)
를사용하여 브로드캐스트를 받는것 까진 성공햇는데
기서 만약 브로드캐스트를 받게되면 MainHomeFragment 안에 있는 MainHomeViewModel 의 값의 VIsibleility 를 변경하고싶습니다 어떻게하면 좋을까요?
많은 구글링 결과 onResume 에서 잡고 onPause 에서 멈추면된다곤 하는데
브로드캐스트에서 인터넷이 안됫을때 MainHomeFragment 에서 알아차릴릴수 있게 compainion Object 에 NetState라는 Boolean 값을 넣고 안됫을떄 false 됫을떄 true 그리고 기본값을 true로두고
if(!NetworkChangeReceiver.networkState){
Timber.d("Test Checked HomeFragment Not network ")
}
이런식으로 로그를 찍고 확인하는데 계속 안타는걸 보고 NetworkChangeReceiver class 에서 디버그 찍어보니 네트워크 변경시 체크하고 네트워크가 없어서 저 false로 넣어주는 부분까지 탓는데도 MainHomeFragment 에서는 인지를 못하더군요 resume을 할수잇게 다른 액티비티에 왓다갓다 햇는데도요
어떤식으로 처리해야되는지 도움 주시면 감사하겟습니다