標籤:broadcastreceive
一、Activity與BroadcastReceiver通訊
1)建立一個BroadcastReceiver,在MainActivity裡通過sendBroadcast方法發送資料
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/89/5A/wKiom1gQVq_An8z3AAAUzJCb3Zw209.png" title="QQ20161026150924.png" alt="wKiom1gQVq_An8z3AAAUzJCb3Zw209.png" />
2)在MyReceiver類中重寫onReceive方法,用參數intent接收資料
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/89/57/wKioL1gQVvOjv1zLAAAR6PzzKQE783.png" title="QQ20161026151034.png" alt="wKioL1gQVvOjv1zLAAAR6PzzKQE783.png" />
二、BroadcastReceiver註冊和登出
1)先在MyReceiver類中定義一個ACTION常量
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/89/58/wKioL1gQWrOyE7q2AAANaAo-_L8021.png" title="QQ20161026152634.png" alt="wKioL1gQWrOyE7q2AAANaAo-_L8021.png" />
2)在MainActivity中建立Intent執行個體,此時就不能用顯示的方法建立了,要用隱示的方法通過ACTION的值來執行個體化
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/89/5A/wKiom1gQXEiD2l3eAAAG_xODWk4001.png" title="QQ20161026153254.png" alt="wKiom1gQXEiD2l3eAAAG_xODWk4001.png" />
3)在MainActivity中定義一個MyReceiver的對象,初始化為null。在用registerReceiver方法時要確保MyReceiver的對象為空白,在用unregisterReceiver方法時確保MyReceiver對象不為空白
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/89/5A/wKiom1gQW8GztY1dAABixTxlcZk394.png" title="QQ20161026153023.png" alt="wKiom1gQW8GztY1dAABixTxlcZk394.png" />
三、BroadcastReceiver優先順序
當有多個廣播接收器的時候,他們的ACTION一致,想設定誰先收到就可以在AndroidManifest.xml檔案中的intent-filter中添加priority,數字高的先接收
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/89/5A/wKiom1gQYE-yrMVJAABYDbc9tVo040.png" title="QQ20161026154931.png" alt="wKiom1gQYE-yrMVJAABYDbc9tVo040.png" />
當優先順序高的接收到了想阻止後面的廣播接收器接收的話,就需要在相應的接收器裡用abortBroadcast方法停止廣播,但阻止的話在MainActivity裡發送廣播的方法就不能用sendBroadcast了,不然會出現異常,要用sendOrderedBroadcast方法
sendOrderedBroadcast(i,null);
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/89/5A/wKiom1gQYRGjlD7cAAATuSaEVXM682.png" title="QQ20161026155345.png" alt="wKiom1gQYRGjlD7cAAATuSaEVXM682.png" />
【學習筆記】BroadcastReceiver的運用