MVVM中的Messenger

Posted 逛园子$$$

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVVM中的Messenger相关的知识,希望对你有一定的参考价值。

    通过Mvvm Light源码我们可以知道Messenger的实现细节,如果你现在还不能理解这些代码也没关系,很多东西理解起来远比使用起来难,Messenger也是如此,它使用起来很简单,由于Messenger只公开了一些消息注册和发送方法,使用者一看便知方法的功能,而只需关注要发送的数据和接收的对象就可以了。

1、发送:

 1 Messenger.Default.Send<string>("StartRecordVis");//开始录制可见光,发送消息 

2、接收:

技术分享图片
 1 1 Messenger.Default.Register<string>(this, BDRecordVideo);// 开始录制
 2  2 private void BDRecordVideo(string obj)
 3  3         {
 4  4             switch (obj)
 5  5             {
 6  6                 case "StartRecordVis":
 7  7                     this.visVideo.StartCapture("vis");//录制可见光
 8  8                     break;
 9  9                 case "StartRecordInf":
10 10                     this.infVideo.StartCapture("inf");//录制红外
11 11                     break;
12 12             }
13 13         }
View Code

3、清理

Messenger通过全局的字典集合来保存弱引用关系,因此在对象不使用时,我们要养成清理的习惯,调用Unregister来从字典集合中移除引用关系。

 1 Messenger.Default.Unregister(this);  

 

以上是关于MVVM中的Messenger的主要内容,如果未能解决你的问题,请参考以下文章

MVVM Light学习笔记:Messenger

这是使用 MVVM Light Messenger 类的正确方法吗

使用 MVVM 和数据绑定更改每个片段中的工具栏标题

Android 上的 Kotlin:如何在片段中使用数据库中的 LiveData?

如何在MVVM架构中观察RecyclerView适配器中的LiveData?

Android MVVM:具有多个片段的活动 - 将共享 LiveData 放在哪里?