1、靜態註冊實現開機啓動android
1.在以前的連載中,咱們編寫的是動態註冊,用到了內部類等。動態註冊只能在程序啓動以後才能生效。接下來咱們將要使用靜態註冊的方式進行註冊。(能夠舉例開機啓動項)git
package com.example.broadcasttest2; import android.content.BroadcastReceiver; import android.widget.Toast; public class BootCompleteReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent) { Toast.makeText(context,"Boot Complete", Toast.LENGTH_LONG).show(); } }
2. 咱們須要AndroidManifest.xml中將這個廣播接收器的類名註冊進去。github
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcasttest2" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BootCompleteReceiver"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> </manifest>
終於在,application>標籤內出現了一個新的標籤<receiver>,全部靜態註冊廣播接收器是在這裏進行註冊的。它的用法其實和<activity>標籤很是類似,首先經過android:name來指定具體註冊哪個廣播接收器,而後在<intent-filter>標籤中里加入想要接受的廣播就好了,因爲Andorid系統啓動完成後會發出一條值爲android.intent.action.BOOT_COMPLETED的廣播,所以咱們我在這裏添加了相應的action。微信
另外,監聽系統開機廣播也是須要聲明權限的,能夠看到,咱們使用<uses-permission>,標籤又加入一條android.permission.RECEIVE_BOOT_COMPLETED權限。app
如今咱們從新運行程序後,咱們的程序已經能夠接受開機廣播了,ide
添加好設置以後,咱們從新啓動一個這個app,而後看一下設置中關於APP的配置信息;能夠看到,這裏有默認啓動項的設置。學習
注意:不要在onReceive()方法中添加過多的邏輯或者進行任何的耗時操做,由於在廣播接收器中是不容許開啓線程的,當onReceive()方法運行了較長時間而沒有結束,程序就會報錯。所以廣播接收器更多的是扮演一種打開程序其餘組件的角色,好比建立一條狀態欄通知,或者啓動一個服務等。大數據
2、源碼:ui
BroadcastTest2spa
https://github.com/ruigege66/Android/tree/master/BroadcastTest2
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料。