静态注册实现开机启动

      动态注册的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,但是 它也存在着一个

缺点,即必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在 onCreate()方法中的。那么有没有

什么办法可以让程序在未启动的情况下就能接收到广播 呢?这就需要使用静态注册的方式了。

 

    里我们准备让程序接收一条开机广播,当收到这条广播时就可以在 onReceive()方法里 执行相应的逻辑,

从而实现开机启动的功能。新建一个 BootCompleteReceiver 继承自 BroadcastReceiver。

代码:

public class BootCompleteReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Boot Complete", Toast.LENGTH_LONG).show();
    }
} 

     这里不再使用内部类的方式来定义广播接收器,我们需要在 AndroidManifest.xml中将这个广播接收器的类名注册一下。

在 onReceive()方法中,还是简单 地使用 Toast弹出一段提示信息:

 AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.broadcasttest"
    android:versionCode="1"
    android:versionName="1.0">……

    <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">……

        <receiver android:name=".BootCompleteReceiver">

            <intent-filter>

                <actionandroid:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
    </application>
</manifest>

在这里即使注册了静态的广播接收器。那么 静态注册实现开机启动也就是这些了。

posted @ 2016-05-13 22:12  Jhin  阅读(1022)  评论(0编辑  收藏  举报