BroadcastReceiver 静态注册

今天跟大家分享一个BroadcastReceiver 静态注册的一个简单小例子。

预备知识:
1.什么是广播?
答:广播接收器,也被称为全局事件,或系统事件。

2.广播的三要素:
答:
1) 广播(Broadcast) - 用于发送广播;
2) 广播接收器(BroadcastReceiver) - 用于接收广播;
3) 意图内容(Intent)-用于保存广播相关信息的媒介。

Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件。

3.广播的生命周期
答:
1)、广播接收器仅在它执行这个方法时处于活跃状态。当onReceive()返回后,它即为失活状态。
2)、拥有一个活跃状态的广播接收器的进程被保护起来而不会被杀死,但仅拥有失活状态组件的进程则会在其它进程 需要它所占有的内存的时候随时被杀掉。
3)、如果响应一个广播信息需要很长的一段时间,一般会将其纳入一个衍生的线程中去完成,而不是在主线程内完成它,从而保证用户交互过程的流畅。

4.广播接收器的注册分类
答:
1)、静态注册
特点:当使用程序退出后,广播依然存在

<receiver android:name=“.XXXReceiver”>
<intent-filter>
<action android:name="频段"/>
</intent-filter>
</receiver>

2)、动态注册
特点:该广播仅在应用中有效,退出后不再接收广播。
registerReceiver():注册广播
unregisterReceiver():注销广播

静态广播接收器注册
步骤:
1:新建一个类,继承BroadcastReceiver
2:在清单配置文件中动态注册

<receiver android:name=".StaticBroadcastReceiver"> 
<intent-filter> </intent-filter></receiver>

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.victor.a1000phone.day22_demo2_broadcastreceiverstatic.MainActivity">

<Button
    android:id="@+id/btn_static"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClick"
    android:text="点击发送广播" />

</RelativeLayout>

MainActivity.class
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
/**
* Created by Victor on 2016/9/21 0021.
*/
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
public void onClick(View view)
{
    switch(view.getId())
    {
        case R.id.btn_static:
            Intent intent =  new Intent();
            intent.setAction("com.victor.happy");
            intent.putExtra("msg","BroadcastReceiver静态注册");
            //发送一条普通的广播
            sendBroadcast(intent);
            break;
        default:
            break;

    }
}

}

MyBroadcastReceiver.class

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
* Created by Victor on 2016/9/21 0021.
*/
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,intent.getStringExtra(“msg”),Toast.LENGTH_LONG).show();
}
}

AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.victor.a1000phone.day22_demo2_broadcastreceiverstatic">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver android:name=".MyBroadcastReceiver">
        <intent-filter>
            <action android:name="com.victor.happy"/>
            </intent-filter>
    </receiver>
</application>


运行结果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值