BroadcastReceiver詳解,broadcastreceiver
啟動BroadcastReceiver需要兩個步驟:
為BroadcastReceiver註冊廣播位址,靜態註冊(intentFilter),動態註冊(registerReceiver)
靜態註冊:
<receiver android:name=".MyReceiver"> <intent-filter> <action android:name="android.intent.action.MY_BROADCAST"/> <category android:name="android.intent.category.DEFAULT" /></intent-filter></receiver>
動態註冊:
MyReceiver receiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.MY_BROADCAST"); registerReceiver(receiver, filter);
還需要解除註冊:unregisterReceiver()
普通廣播對於多個接收者來說是完全非同步,通常每個接收者都無需等待即可以接收到廣播,接收者相互之間不會有影響。對於這種廣播,接收者無法終止廣播,即無法阻止其他接收者的接收動作。
終止廣播:abortBroadcast()
http://blog.csdn.net/liuhe688/article/details/6955668
sendOrderedBroadcast(intent, string) 發送有序廣播:
注意,使用sendOrderedBroadcast方法發送有序廣播時,需要一個許可權參數,如果為null則表示不要求接收者聲明指定的許可權,如果不為null,則表示接收者若要接收此廣播,需聲明指定許可權。
接收系統Broadcaset,比如開機完成“android.intent.action.BOOT_COMPLETED”,“android.permission.ACCESS_NETWORK_STATE”,廣播;然後構建啟動服務Intent, new Intent(context,service.class); context.startService(intent); 啟動Service.
ContentResolver對指定Uri執行CRUD等資料操作,但Uri並不是真正的資料核心,因此這些CRUD操作會委託給該Uri對應的ContentProvider來實現。
在AndroidManifest.xml中配置了provider之後,在Activity裡getContentResolver()擷取到resolver,再通過resolve調用query, insert, update等方法的時候,其實就是調用到了Provider執行資料操作。