Xamarin Message Center 多个相同的消息不同的结果
Xamarin Message Center Multiple Of The Same Message Different Results
我正在制作一个计时器应用程序,因此背景非常重要。我这样做的方式是通过这个 link 中概述的方法。 https://robgibbens.com/backgrounding-with-xamarin-forms/ 基本上是 Ticked 消息循环和更新视图。
问题是我想同时拥有多个计时器 运行。这让我的程序感到困惑,计时器开始接收彼此的消息。知道如何在 class 和 AppDelegate.cs 和 MainActivity.cs class 之间的消息中心私下发送消息吗?
谢谢
您可以为MessagingCenter
设置不同的消息名称,如下代码。一条消息名为 OneMessage
,另一条消息名为 TwoMessage
,
private void TimerUp(object sender, ElapsedEventArgs e)
{
currentCount += 1;
MessagingCenter.Send<App, string>(App.Current as App, "OneMessage", currentCount.ToString());
currentCount2 += 2;
MessagingCenter.Send<App, string>(App.Current as App, "TwoMessage", currentCount2.ToString());
}
我们在接收MessagingCenter的时候,可以通过MessageName来区分
MessagingCenter.Subscribe<App, string>(App.Current, "OneMessage", (snd, arg) =>
{
Device.BeginInvokeOnMainThread(() => {
//we can get the information by arg
myLabel.Text = arg;
});
});
MessagingCenter.Subscribe<App, string>(App.Current, "TwoMessage", (snd, arg) =>
{
Device.BeginInvokeOnMainThread(() => {
//we can get the information by arg
myLabel2.Text = arg;
});
});
这是运行 gif。
这是我的演示。
https://github.com/851265601/MessageCenterDemo
我注意到你想让后台服务始终保持 运行。 Due to Android 8.0 limiation。如果应用程序在后台,正常服务将被杀死。所以我建议你使用前台服务来保持服务始终运行.
https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services
这是我关于前台服务的演示。
我正在制作一个计时器应用程序,因此背景非常重要。我这样做的方式是通过这个 link 中概述的方法。 https://robgibbens.com/backgrounding-with-xamarin-forms/ 基本上是 Ticked 消息循环和更新视图。
问题是我想同时拥有多个计时器 运行。这让我的程序感到困惑,计时器开始接收彼此的消息。知道如何在 class 和 AppDelegate.cs 和 MainActivity.cs class 之间的消息中心私下发送消息吗?
谢谢
您可以为MessagingCenter
设置不同的消息名称,如下代码。一条消息名为 OneMessage
,另一条消息名为 TwoMessage
,
private void TimerUp(object sender, ElapsedEventArgs e)
{
currentCount += 1;
MessagingCenter.Send<App, string>(App.Current as App, "OneMessage", currentCount.ToString());
currentCount2 += 2;
MessagingCenter.Send<App, string>(App.Current as App, "TwoMessage", currentCount2.ToString());
}
我们在接收MessagingCenter的时候,可以通过MessageName来区分
MessagingCenter.Subscribe<App, string>(App.Current, "OneMessage", (snd, arg) =>
{
Device.BeginInvokeOnMainThread(() => {
//we can get the information by arg
myLabel.Text = arg;
});
});
MessagingCenter.Subscribe<App, string>(App.Current, "TwoMessage", (snd, arg) =>
{
Device.BeginInvokeOnMainThread(() => {
//we can get the information by arg
myLabel2.Text = arg;
});
});
这是运行 gif。
这是我的演示。
https://github.com/851265601/MessageCenterDemo
我注意到你想让后台服务始终保持 运行。 Due to Android 8.0 limiation。如果应用程序在后台,正常服务将被杀死。所以我建议你使用前台服务来保持服务始终运行.
https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services
这是我关于前台服务的演示。