关于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){...}
...
}
问题是,即使ParemeterValues正确更新,ViewModel中的myId始终是第一个通知中的Id。
有什么想法吗?
答案 0 :(得分:1)
我认为这是标准的Android行为。
查看问题和博客文章,如:
我相信有一些Cancel
和Update
标记可以传递给PendingIntent.GetActivity
以解决此问题 - 但我担心我不知道哪个适用于您的应用