学习了前面的活动与服务后,你会发现服务对于活动而言似乎就是透明的,相反活动对于服务也是透明的,所以我们还需要一中机制能够将服务和活动之间架起一座桥梁,通过本节的学习,你将会学到广播与绑定服务,这两种方式恰恰是解决上面问题的关键。

 

二、简单的广播接收器

实现一个最简单的广播接收器需要继承BroadcastReceiver类,并且还要实现OnReceive方法,我们可以在项目中新建一个MainReceiver类,然后写入如下代码:

1     public class MainReceiver : BroadcastReceiver
2     {
3         public override void OnReceive(Context context, Intent intent)
4         {
5 
6         }
7 }

 上面其实已经实现了一个简单的广播接收器,并且可以使用。我们还需要注册广播接收器,否则广播接收器就无法接收广播,所以我们需要在MainActivity.cs中注册这个广播接收器。当然为了能够接近现实,我们需要在OnResume中注册,在OnPause中注销。

首先我们在OnResume中注册

1         protected override void OnResume()
2         {
3             base.OnResume();
4             receiver = new MainReceiver();
5             RegisterReceiver(receiver, new IntentFilter("xamarin-cn.main.receiver"));
6         }

 接着我们在OnPause中注销

1         protected override void OnPause()
2         {
3             base.OnPause();
4             UnregisterReceiver(receiver);
5         }

 全部代码如下所示

 1     [Activity(Label = "BroadcastStudy", MainLauncher = true, Icon = "@drawable/icon")]
 2     public class MainActivity : Activity
 3     {
 4         private MainReceiver receiver;
 5 
 6         protected override void OnCreate(Bundle bundle)
 7         {
 8             base.OnCreate(bundle);
 9             SetContentView(Resource.Layout.Main);
10         }
11 
12         protected override void OnResume()
13         {
14             base.OnResume();
15             receiver = new MainReceiver();
16             RegisterReceiver(receiver, new IntentFilter("xamarin-cn.main.receiver"));
17         }
18 
19         protected override void OnPause()
20         {
21             base.OnPause();
22             UnregisterReceiver(receiver);
23         }
24 }
View Code

相关文章: