廣播

private ReceiveBroadCast receiveBroadCast;  //廣播實例
 
public class RegisteLinster implements OnClickListener
{
        @Override
        public void onClick(View view)
        {
            // 註冊廣播接收
            receiveBroadCast = new ReceiveBroadCast();
            IntentFilter filter = new IntentFilter();
            filter.addAction(flag);    //只有持有相同的action的接受者才能接收此廣播
            registerReceiver(receiveBroadCast, filter);
        }
}
 
public class ReceiveBroadCast extends BroadcastReceiver
{
 
        @Override
        public void onReceive(Context context, Intent intent)
        {
            //獲得廣播中獲得的數據,並顯示出來
            String message = intent.getStringExtra("data");
            txtShow.setText(message);
        }
 
}
首先咱們實現了一個ReceiveBroadCast 類,它繼承了BroadcastReceiver並實現了其中的onReceive方法,這樣當這個廣播被接收的時候就會執行這個方法。注意咱們在註冊廣播的時候使用了filter.addAction方法添加了一個過濾器。若是沒有這一句,就至關於廣播電臺沒有告訴我們收音機用戶接收的頻率,就很差收聽這個廣播了。

再來看看如何取消註冊,是的程序再也不接收這個類型的廣播了。

1
2
3
4
5
6
7
8
9
public class UnregisteLinster implements OnClickListener
{
 
        @Override
        public void onClick(View arg0)
        {
            unregisterReceiver(receiveBroadCast);
        }
}
怎麼樣?是否是超級簡單的啊,就是將咱們上面的那個廣播類的實例傳進去就好了。如今註冊,取消註冊都好了,就剩下如何發送了。看代碼:

1
2
3
4
5
6
7
8
9
10
11
public class SendBroadCastListener implements OnClickListener
{
        @Override
        public void onClick(View arg0)
        {
            Intent intent = new Intent();  //Itent就是咱們要發送的內容
            intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND));  
            intent.setAction(flag);   //設置你這個廣播的action,只有和這個action同樣的接受者才能接受者才能接收廣播
            sendBroadcast(intent);   //發送廣播
        }
}

  

動態註冊方式java

         咱們在程序中設置了三個按鈕,分別是「註冊廣播」,「取消註冊」和「發送廣播」。而後每一個按鈕設置點擊事件來完成廣播的演示。ide

最簡單的項目的創建過程和按鈕事件的創建我再這裏就不羅嗦了,不會的能夠下載下面的DEMO源碼查看。直接看三個按鈕的實現方式。this

首先是註冊廣播的按鈕事件代碼:spa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private  ReceiveBroadCast receiveBroadCast;   //廣播實例
 
public  class  RegisteLinster implements OnClickListener
{
         @Override
         public  void  onClick(View view)
         {
             // 註冊廣播接收
             receiveBroadCast =  new  ReceiveBroadCast();
             IntentFilter filter =  new  IntentFilter();
             filter.addAction(flag);     //只有持有相同的action的接受者才能接收此廣播
             registerReceiver(receiveBroadCast, filter);
         }
}
 
public  class  ReceiveBroadCast extends BroadcastReceiver
{
 
         @Override
         public  void  onReceive(Context context, Intent intent)
         {
             //獲得廣播中獲得的數據,並顯示出來
             String message = intent.getStringExtra( "data" );
             txtShow.setText(message);
         }
 
}

首先咱們實現了一個ReceiveBroadCast 類,它繼承了BroadcastReceiver並實現了其中的onReceive方法,這樣當這個廣播被接收的時候就會執行這個方法。注意咱們在註冊廣播的時候使用了filter.addAction方法添加了一個過濾器。若是沒有這一句,就至關於廣播電臺沒有告訴我們收音機用戶接收的頻率,就很差收聽這個廣播了。code

再來看看如何取消註冊,是的程序再也不接收這個類型的廣播了。blog

1
2
3
4
5
6
7
8
9
public  class  UnregisteLinster implements OnClickListener
{
 
         @Override
         public  void  onClick(View arg0)
         {
             unregisterReceiver(receiveBroadCast);
         }
}

怎麼樣?是否是超級簡單的啊,就是將咱們上面的那個廣播類的實例傳進去就好了。如今註冊,取消註冊都好了,就剩下如何發送了。看代碼:繼承

1
2
3
4
5
6
7
8
9
10
11
public  class  SendBroadCastListener implements OnClickListener
{
         @Override
         public  void  onClick(View arg0)
         {
             Intent intent =  new  Intent();   //Itent就是咱們要發送的內容
             intent.putExtra( "data" "this is data from broadcast " +Calendar.getInstance(). get (Calendar.SECOND));  
             intent.setAction(flag);    //設置你這個廣播的action,只有和這個action同樣的接受者才能接受者才能接收廣播
             sendBroadcast(intent);    //發送廣播
         }
}
相關文章
相關標籤/搜索