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中中注册,推荐用这种方法注册
<receiveer android:name="WorkReceiver">
<intent-filter>
<action android:name="HelloWorld"/>
</intent-filter>
</receiver>
第二种方法是在代码中注册,这种方法的好去是灵活。
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
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidtest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="WorkReceiver">
<intent-filter>
<action android:name="HelloWorld"/>
</intent-filter>
</receiver>
</application>
</manifest>
分享到:
相关推荐
详细介绍了android广播机制,和代码设计。
android 广播机制的实现,包括静态注册和动态注册,动态示例为获取android的短信广播,并读取短信内容,有些手机需要关闭系统独占短信和网络短信
Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。而作为应用开发者,就需要数练掌握Android系统提供的一个开发利器,...
broadcast_Android 广播机制broadcast用法实例.rar
android-关于广播机制的使用 android-关于广播机制的使用
Android广播机制安全性研究.pdf
详见http://blog.csdn.net/huaxun66/article/details/52935631
学习android一段时间,觉得广播机制很重要,简单的广播机制,完整的代码。对于初学者是很是受用
NULL 博文链接:https://chjmars.iteye.com/blog/1270992
附件为标准广播和有序广播的示例代码。如果对您有帮助请给5星好评 博客为:https://blog.csdn.net/qq_35698774/article/details/106573979
这是一个演示使用android广播机制的小例子
这个例子主要研究Android broadcast广播机制的实现,以一个电池监测及广播通知为例,介绍了实现broadcast的过程:大致的思路是:注册一个系统 BroadcastReceiver,作为访问电池计量之用,如果捕捉到的action是ACTION...
近年来,Android组件的安全性是研究热点,但...在研究Android广播机制的基础上,对其安全结构与特点进行了深入分析。基于Android广播机制的安全挑战,针对性地给出相应的安全对策。最后,总结并展望今后的研究方向。
Android Broadcast 广播机制 实例
android广播时间处理机制学习小结,android开发技术方面的事件处理信息。
这是一篇关于Android广播机制详解的源码,结合文章阅读,开发者可更好的理解Android广播机制。
关于Android的广播机制学习,自己根据自己的理解写的内容。贴了代码和自己的总结以及必要的编写的代码。
简单的broadcast广播机制的使用,实现了通过动态注册广播和静态注册广播的方法,代码比较简单,通俗易懂。