編輯:關於Android編程
BroadcastReceiver用於監聽系統全局的廣播消息,接受程序所發出的Broadcast Intent。
Broadcast被分為兩種:Normal Broadcast(普通廣播);Ordered Broadcast(有序廣播);
Context提供了對應的方法發送廣播這兩種廣播:
sendBroadcast():發送Normal Broadcast
sendOrderedBroadcast():發送Ordered Broadcast(對於Ordered Broadcast,系統會根據接受者聲明的優先級別按順序逐個執行接受者,優先接受到的Broadcast可以終止Broadcast,調用BroadcastReceiver的abortBroadcast()方法即可終止Broadcast)。
程序啟動BroadcastReceiver需要兩步:
第1步:創建需要啟動的BroadcastReceiver的Intent
第2步:調用Context的sendBroadcast()或者sendOrderedBroadcast()方法來啟動指定的BroadcastReceiver
注意:OnXxxListener只是程序級的監聽器,BroadcastReceiver只是一個系統級的監聽器且擁有自己的進程。
下面簡單實現了如何發送Broadcast、使用BroadcastReceiver接受廣播:
(1)在Activity中創建一個Intent,並使用該Intent對象對外發送一條廣播
// 創建Intent對象
Intent intent = new Intent();
// 設置Intent的Action屬性
intent.setAction("com.gc.action.CRAZY_BROADCAST");
intent.putExtra("msg", "Test Message");
// 發送廣播
sendBroadcast(intent);
(2)該程序使用到的BroadcastReceiver代碼如下:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("接受到的Intent的Action:" + intent.getAction());
System.out.println("消息內容是:" + intent.getStringExtra("msg")");
}
}
(3)配置上面的BroadcastReceiver應該監聽的Action字符串的Intent
有兩種方式進行配置:
第一種:在代碼中配置:
IntentFilter filter = new IntentFilter("com.gc.action.CRAZY_BROADCAST");
MyReceiver receiver = new MyReceiver();
registerReceiver(receiver, filter);
第二種:在AndroidManifest.xml文件中配置
下面是常見Action常量,更多的請參考官方文檔中關於Intent的說明(docs/reference/android/content/Intent.html)。
這個標題起的有點誇張哈,但是LayoutInflater這個類的一些用法,在Android開發者使用的過程中,確實存在著一些很普遍的誤區,最起碼我研究的這麼多小項目的源代
Git上看到的一個蠻清爽的一個Dialog介紹給大家。實現效果個人感覺做的還是滿Q彈的如何使用? compile 'com.github.michae
Android控件監聽方面,用接口實現監聽是最好的,在Android 本身就提供了各種控件監聽接口,我們只要按照這樣實現,看起來代碼會很整潔。實現的效果也是很
公司項目中有這樣一個需求,當從網絡獲取json數據並解析後,動態的添加按鈕,點擊時切換對應按鈕下存儲的各種數據。如下圖:這裡只是單單為了動態添加RadioButton而已