我一直在寻找一种方法来发送应用程序内部的本地消息,并在Xamarin网站上找到了有关Broadcast Receivers的教程,具体内容在这里(链接),特别是网页底部关于LocalBroadcastManager的部分。我按照教程进行操作并阅读了几遍该页面,但当我发送一条消息时,我的BroadcastReceiver类仍然没有接收到任何内容。我遇到了许多关于java中LocalBroadcastManager的问题,但似乎无法弄清楚C#缺少什么。
这是触发发送消息的代码:
这是触发发送消息的代码:
Intent intent = new Intent("dirty");
intent.PutExtra("dirtyAppCount", dirtyAppCount);
LocalBroadcastManager.GetInstance(Context).SendBroadcast(intent);
在OnResume()方法中,这里是我注册接收器的地方:
_dirtyMessageReceiver = new DirtyBroadcastReceiver();
RegisterReceiver(_dirtyMessageReceiver, new IntentFilter("dirty"));
在OnPause()中取消注册接收器:
UnregisterReceiver(_dirtyMessageReceiver);
这是我的接收器类:
[BroadcastReceiver(Enabled = true, Exported = false)]
public class DirtyBroadcastReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
int dirtyAppCount = intent.GetIntExtra("dirtyAppCount", 0);
OnMessageReceived?.Invoke(this, new MessageArgs(dirtyAppCount));
}
}