android o 广播机制,Android广播机制

本文介绍了Android中BroadcastReceiver和Intent的重要作用,它们作为进程间通信的桥梁,允许应用程序响应系统或自定义事件。当电池电量、网络状态、来电等事件发生时,Android系统会广播Intent,注册的BroadcastReceiver可以通过onReceive方法捕获并处理这些事件。示例代码展示了如何创建、发送Intent以及注册和注销BroadcastReceiver。请注意,onReceive方法内不应执行长时间任务,避免阻塞主线程。

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

Intent有一个重要的机制就是作为不同进程间传递数据和事件的媒介。

通常我们自己的应用或者Android系统本身在某些事件来临的时候会将Intent广播出去的,而注册的Broadcast Receiver可以监听到这些Intent并且可以获得保存在Intent中的数据。

例如,在电池电量发生变化,网络连接发生变化或者是来电,来短信的时候,Android系统都会将相关的Intent进行广播

。如果注册了针对这些事件的Broadcast Receiver,那么就可以处理这些事件。

实现广播事件

Intent intent=new Intent("HelloWorld");

intent,putExtra("DATA","HHHHHHH");

sendBroadcast(intent);

通过继承BroadcaastReceiver类,并重写这个类当中的onReceiver方法来实现

public class WorkReceiver extends BroadcastReceiver

{

public void onReceive(Context context,Intent intent)

{

}

}

在onReceive方法不要有执行超过5秒的代码。如果有的话,建议在该方法中写一个线程,单独执行

注册和注销BroadcastReceiver

方法一:在AndroidManifest.xml中中注册,推荐用这种方法注册

第二种方法是在代码中注册,这种方法的好去是灵活。

IntentFilter filter=new IntentFilter("HelloWorld");

WorkReceiver wr=new WorkReceiver();

registerReceiver(wr,filter);

注销的话

unregisterReceiver(wr);

注意:wr必须为同一个对象。

下面是一个实例

package com.example.androidtest;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

menu.add(0, 0, 0, "WorkReceiver");

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// TODO Auto-generated method stub

if(item.getItemId()==0)

{

Intent intent=new Intent("HelloWorld");

this.sendBroadcast(intent);

}

return super.onOptionsItemSelected(item);

}

}

WorkReceiver类

package com.example.androidtest;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

public class WorkReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

Toast.makeText(context, "HelloWorld", Toast.LENGTH_LONG).show();

}

}

AndroidMenifest.xml

package="com.example.androidtest"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="4"

android:targetSdkVersion="15" />

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/title_activity_main" >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值