人們只是有廣播接收器類和他們有它的表現。但是你不需要某種註冊過程?
清單中的<receiver>
元素具有<intent-filter>
子元素,記錄了Intent
結構,它希望接收:
<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="1"
android:versionName="1.0"
package="com.commonsware.android.sysevents.boot"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="3"
android:targetSdkVersion="6" />
<supports-screens android:largeScreens="false"
android:normalScreens="true"
android:smallScreens="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application android:icon="@drawable/cw"
android:label="@string/app_name">
<receiver android:name=".OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
在這裏,我們註冊BroadcastReceiver
,命名爲OnBootReceiver
,接收BOOT_COMPLETED
廣播。
系統怎麼會知道有一個X程序誰擁有廣播接收者Y監聽啓動事件,除非通過註冊
Android是「明確通過註冊告訴」明確告知。恰恰相反,「註冊」是通過清單完成的,而不是通過應用程序中的Java代碼完成的。
所以,如果我做context.registerReceiver()那麼我不需要添加廣播接收器來顯示,對吧? – Snake
@Snake:是的,請記住'registerReceiver()'不適用於'ACTION_BOOT_COMPLETED'。 – CommonsWare