製作一個最簡單的Broadcast
實現一個最簡單的廣播接收器需要繼承BroadcastReceiver類(抽象類),並且還要實現OnReceive方法,
默認情況下:廣播接收器也是運行在UI線程裏面的,所以一般不要寫太多太耗時的操作代碼
先實現一個類,繼承BroadcastReceiver,當這個廣播被接收時就會調用這個方法
class BroadReceiver:Android.Content.BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
//todo
}
}
還記得Android入門時提到的四大件嗎?
---------Activity 服務 廣播 Content Provider
四大件的共通點就是都需要註冊
所以
我們還需要註冊廣播接收器,否則廣播接收器就無法接收廣播,我們需要在MainActivity.cs中註冊這個廣播接收器。
註冊一個廣播
private BroadReceiver broad;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
var button = FindViewById<Button>(Resource.Id.MyButton);
button.Click += delegate
{
//實例化一個廣播
broad = new BroadReceiver();
RegisterReceiver(broad, new IntentFilter()); //Register
};
}
發送廣播
接下來我們要做的就是發送廣播了
在網上看到一段話,我覺得對這個廣播理解的特別好
我們拿廣播電臺來做個比方。我們平常使用收音機收音是這樣的:許許多多不同的廣播電臺通過特定的頻率來發送他們的內容,而我們用戶只需要將頻率調成和廣播電臺的一樣就可以收聽他們的內容了。Android中的廣播機制就和這個差不多的道理。
電臺發送的內容是語音,而在Android中我們要發送的廣播內容是一個Intent。這個Intent中可以攜帶我們要傳送的數據。
電臺通過大功率的發射器發送內容,而在Android中則是通過sendBroadcast這個方法來發送
戶通過調整到具體的電臺頻率接受電臺的內容。而在Android中要接受廣播中的內容則是通過註冊一個BroadCastReceiver來接收的。只有發送廣播的action和接收廣播的action相同,接受者才能接受這個廣播。
取消註冊廣播
Cancel.Click += delegate
{
UnregisterReceiver(broad);//ungister
};
動態和靜態註冊的區別
動態和靜態註冊廣播之間的區別就是作用的範圍不同,程序動態註冊的接收者只在程序運行過程中有效,而在xml註冊的接收者不管你的程序有沒有啓動有會起作用。