如何广播Receiver和MVVM? [英] how to broadcast Receiver and MVVM?

查看:344
本文介绍了如何广播Receiver和MVVM?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的清单

<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类

and 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 !! ")
        }
    }
}

我要在这里检测网络.

I going to detect the network here.

如果mainViewModel检测到我在这里检测到的内容,则尝试显示图像,但我不知道该怎么做

If my mainViewModel detects what I've detected here, I'm trying to bring up an image, but I don't know what to do

正在使用实时数据对图像进行可视化,如果此处的网络发生变化,我想在MainView模型中更改图像的可见性.

Image is being visualized using live data and if the network changes here, I want to change the visibility of the image in my MainView Model.

推荐答案

使用您的Application类.在其中包含LiveData或对共享ViewModel的引用. 您可以从NetworkChangeReceiver

Use your Application class. either have a LiveData in it or a reference to a shared ViewModel. You can access Application using context.getApplicationContext() from NetworkChangeReceiver

这篇关于如何广播Receiver和MVVM?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆