android四大组件之一:广播

本文探讨了Android系统中的广播通信机制,重点在于广播发送者和接收者的角色。通过实例,介绍了如何创建自定义广播接收器MyBroadCastRecevier,当接收到广播时,接收器会显示通知并引导用户进入特定页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 广播分为两个角色:广播发送者、广播接收器

 

 

练习:发送者发送消息给广播接收器,再由接收器发送消息给用户

1.发送者
package com.example.administrator.myapplication;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;

public class BroadCastActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_broad_cast);
        //注册广播接收器,它监听的是action为recevier的广播
        registerReceiver(new MyBroadCastRecevier(),new IntentFilter("recevier"));
    }

     //   按钮监听方法
    public void sendBroacast(View view)
    {
        Intent intent=new Intent();
        intent.putExtra("name","张三");
        //设置action
        intent.setAction("recevier");
      //发送广播,只有注册监听的广播接收器才可以接收到
        sendBroadcast(intent);
    }
}

2.自定义一个广播接收器MyBroadCastRecevier ,集成BroadcastReceiver抽象类,并实现onReceive方法,该方法是接受到广播做的事情,在这个例子中当收到广播时候先Toast一个消息显示已经收到广播,然后跳转到用户页面。

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

public class MyBroadCastRecevier extends BroadcastReceiver {
    /**
     * 该方法运行在主线程中,不能做太耗时的工作
     * @param context
     * @param intent
     */
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"正在发布给用户",Toast.LENGTH_SHORT).show();
        //跳转别的activity
        intent.setClass(context,BroadcastUserActivity.class);
        context.startActivity(intent);

    }
}

3.用户activity,获取从广播接收器传来的intent


import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.Toast;

public class BroadcastUserActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_broacast_user);
        Intent intent=getIntent();//获取intent
        String name= intent.getStringExtra("name");//获取intent中的参数
        Toast.makeText(this,"我是"+name+",我是广播用户",Toast.LENGTH_LONG).show();//利用Toast显示
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值