Android连载20-静态注册实现开机启动

一、静态注册实现开机启动
1.在之前的连载中,我们编写的是动态注册,用到了内部类等。动态注册只能在程序启动之后才能生效。接下来我们将要使用静态注册的方式进行注册。(可以举例开机启动项)

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();
  }

}
  1. 我们需要AndroidManifest.xml中将这个广播接收器的类名注册进去。
<?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>标签内出现了一个新的标签,所有静态注册广播接收器是在这里进行注册的。它的用法其实和标签非常相似,首先通过android:name来指定具体注册哪一个广播接收器,然后在标签中里加入想要接受的广播就行了,由于Andorid系统启动完成后会发出一条值为android.intent.action.BOOT_COMPLETED的广播,因此我们我在这里添加了相应的action。
另外,监听系统开机广播也是需要声明权限的,可以看到,我们使用,标签又加入一条android.permission.RECEIVE_BOOT_COMPLETED权限。
现在我们重新运行程序后,我们的程序已经可以接受开机广播了,
添加好设置之后,我们重新启动一个这个app,然后看一下设置中关于APP的配置信息;可以看到,这里有默认启动项的设置。
20.1
注意:不要在onReceive()方法中添加过多的逻辑或者进行任何的耗时操作,因为在广播接收器中是不允许开启线程的,当onReceive()方法运行了较长时间而没有结束,程序就会报错。因此广播接收器更多的是扮演一种打开程序其他组件的角色,比如创建一条状态栏通知,或者启动一个服务等。
二、源码:
BroadcastTest2
https://github.com/ruigege66/Android/tree/master/BroadcastTest2
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料。
20.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值