mvvm 패턴사용도중 네트워크 브로드캐스트 리시버에 대해 잘안풀려서 질문하러왔습니다
class NetworkChangeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val connMgr = BaseApplication.context?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = connMgr.activeNetworkInfo
val isConnected: Boolean? = activeNetwork?.isConnected
if(isConnected != true) {
Toast.makeText(context, "네트워크 꺼짐", Toast.LENGTH_SHORT).show()
} else {
}
}
}
이런식으로 브로드캐스트 리시버 클래스를 만들고 매니패스트에도 재대로 등록을해놧고요
baseApplication 에도
private fun networkState(){
val filter: IntentFilter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
val networkChangeReceiver = NetworkChangeReceiver()
registerReceiver(networkChangeReceiver, filter)
}
로 적용해놔서 어디서든 네트워크가 없으면 저 토스트 메시지가 임시로 뜨게해놧습니다
여기서 mainViewModel 에서
private val _networkVisibility = MutableLiveData<Boolean>(!context?.applicationContext?.isNetworkAvailable!!)
val networkVisibility: LiveData<Boolean>
get() = _networkVisibility
networkVisibility를 xml에서 바인딩하고있는데 실시간으로 변경이 되지않네요
제가 원하는건 특정 버튼이 네트워크가 없을때 메인화면에서 나오는걸 원하고있습니다
제생각에는 저 네트워크 브로드캐스트리시버 클래스에서 _networkvisiblilty를 바꿔주면 간단한데
저걸 companion object 로 해서 저쪽에서 그냥 value 값을 true로 주면될줄알앗는데 안되더라고요
이것저것 많이해본상태고 구글링도 진짜로 진짜로 많이해봣고 스택오버플로에도 질문해봣는데 답변이안와서 여기에도 도움을 구하고자 올립니다 .
제가원하는건 단하나 메인뷰모델에 있는 어떤 boolean 값을 true 로 보여주고싶습니다
아시는분은 지식을 나누어주시면 감사하겟습니다