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

如何从MainActivity.cs向App.cs的OnResume方法传递notificationId参数

实现步骤

  • 步骤1:在MainActivity.cs中获取notificationId并传递给App实例
    如果你是从通知点击事件获取该参数,可在OnCreate(冷启动场景)和OnNewIntent(应用已在后台运行场景)中取出Intent携带的参数,再传给App类:
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        
        // 冷启动时从Intent取参数,默认值可根据业务自定义
        int notificationId = Intent.GetIntExtra("notification_id", -1);
        
        LoadApplication(new App(notificationId));
    }
    
    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
        
        // 应用在后台时点击通知取参数
        if (intent.HasExtra("notification_id"))
        {
            int notificationId = intent.GetIntExtra("notification_id", -1);
            var currentApp = (App)Application.Current;
            currentApp.OnResume(notificationId);
        }
    }
    
  • 步骤2:调整App.cs的逻辑接收参数
    你可以通过构造函数传参接收冷启动场景的id,也可以直接调用你定义的带参OnResume方法:
    private int _initNotificationId;
    // 构造函数接收冷启动时传入的id
    public App(int notificationId)
    {
        InitializeComponent();
        _initNotificationId = notificationId;
    }
    
    // 系统默认的OnResume回调,应用从后台恢复时触发
    protected override void OnResume()
    {
        base.OnResume();
        // 传入初始化时保存的id,你也可以根据业务逻辑调整这里的取值
        OnResume(_initNotificationId);
    }
    
    // 你自定义的带参方法,改为public允许外部调用
    public void OnResume(int notificationId)
    {
        // 增加无效值判断,避免报错
        if(notificationId >= 0)
        {
            MainPage = new AppShell(notificationId);
        }
    }
    

注意事项

  • 你发送通知时给PendingIntent绑定的Intent,需要和上面代码里取值的Extra key保持一致,示例中用的key是notification_id,你可以根据自己的业务修改
  • 拿到id后先做有效性校验,避免传入默认值触发无效的数据库查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:06:03