You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MessagingCenter.Send无法触发MainActivity中的Subscribe方法排查

MAUI中MessagingCenter无法触发Android端订阅的问题排查

问题根源及修正点:

  1. MessagingCenter泛型类型不匹配
    MessagingCenter的Send和Subscribe必须使用一致的发送者类型,原代码完全搞错了用法:
  • 原Send<String>("user_name", "Message_text")写法错误:泛型参数应该是发送者的类型(比如MainPage),而非消息内容的类型;第一个参数必须是发送者的实例(比如this),不是消息内容。
  • 对应的Subscribe也要使用相同的发送者类型,才能匹配到消息。
  1. MainActivity的OnCreate重载错误
    你重写的是带PersistableBundle persistentState的OnCreate重载,这个方法在MAUI启动流程中不会被调用,导致订阅代码根本没执行。应该重写不带第二个参数的OnCreate方法。

修正后的代码:

MainPage.xaml.cs

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    [Obsolete]
    private void Button1_Clicked(object sender, EventArgs e)
    {
        // 泛型指定发送者类型为MainPage,传递当前实例this,消息标识"Message_text",附带消息内容"user_name"
        MessagingCenter.Send<MainPage, string>(this, "Message_text", "user_name");
    }
}

Platforms\Android\MainActivity.cs

[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
    [Obsolete]
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Toast.MakeText(this, "OnCreate", ToastLength.Long).Show();
        
        // 泛型对应发送者类型MainPage,接收string类型的消息内容
        MessagingCenter.Subscribe<MainPage, string>(this, "Message_text", (sender, value) =>
        {
            DisplayMessage(value);
        });
    }

    private void DisplayMessage(string value)
    {
        Toast.MakeText(this, "Message Text = " + value, ToastLength.Long).Show();
    }
}

额外提示:

MessagingCenter在MAUI中已被标记为过时,官方推荐使用WeakReferenceMessenger(来自CommunityToolkit.Mvvm包),新项目建议切换到该方案,避免内存泄漏问题。

内容的提问来源于stack exchange,提问作者Abhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:58:24