【问题标题】:ParameterValues from MvxViewModelRequest are only available from first notificationMvxViewModelRequest 中的 ParameterValues 仅在第一次通知时可用
【发布时间】:2013-09-06 14:52:09
【问题描述】:

关于this question,我实现了一个类似这样的消息服务插件:

        var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
        var context = activity.ApplicationContext;
        var request = MvxViewModelRequest<MyViewModel>.GetDefaultRequest();
        request.ParameterValues = new Dictionary<string, string> { { "setId", setId.ToString() } };
        var translator = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator>();
        var intent = translator.GetIntentFor(request);
        var pending = PendingIntent.GetActivity(context, 0, intent, 0);
        var builder = new NotificationCompat.Builder(context)
            .SetContentTitle(title)
            .SetSmallIcon(Resource.Drawable.Icon)
            .SetContentText(message)
            .SetContentIntent(pending);
        var notificationManager = (NotificationManager)activity.ApplicationContext.GetSystemService(Context.NotificationService);
        notificationManager.Notify(0, builder.Build());

通知会打开这个 ViewModel:

        public class MyViewModel : MvxViewModel
        {
           ...
           public void Init(int setId){...}
           ...
        }

问题是,ViewModel 中的 myId 始终是第一个通知中的 Id,即使 ParemeterValues 已正确更新。

有什么想法吗?

【问题讨论】:

    标签: android mono mvvmcross


    【解决方案1】:

    我相信这是标准的 Android 行为。

    查看问题和博客文章,例如:

    我相信您可以将一些 CancelUpdate 标志传递给 PendingIntent.GetActivity 以解决此问题 - 但恐怕我不知道哪个最适合您的应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      相关资源
      最近更新 更多