bha*_*thi 7 android intentfilter broadcastreceiver
我是android平台的新手.请帮我解释一下广播接收器和意图过滤器在android.please中的行为如何在简单的行中解释或者使用example.thanks提前解释...
Rof*_*ion 18
广播接收器是Android项目中的一个类,它负责接收所有意图,这些意图由其他活动使用 android.content.ContextWreapper.sendBroadcast(Intent intent)
在您接收活动的清单文件中,您必须声明哪个是您的广播接收器类,例如:
<receiver android:name="xyz.games.pacman.network.MessageListener">
<intent-filter>
<action android:name="xyz.games.pacman.controller.BROADCAST" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
如您所见,您还在此处定义了意图过滤器,即广播接收器应接收哪些意图.
然后你必须定义一个扩展BroadcastReceiver的类.这是您在清单文件中定义的类:
public class MessageListener extends BroadcastReceiver {
/* (non-Javadoc)
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
...
}
Run Code Online (Sandbox Code Playgroud)
这里,接收通过过滤器传递的所有意图,您可以使用方法调用中传递的参数访问它们.
小智 11
BroadcastReceiver可以通过两种方式注册:dynamic或static.静态只不过是通过intent-filterin AndroidManifest.xml来声明动作来注册新的BroadcastReceiver 类.Dynamic正在从另一个类中注册接收器.一种intent-filter确定哪些操作应被接收.
要创建BroadcastReceiver,您必须扩展BroadcastReceiver类和override onReceive(Context,Intent)方法.在这里,您可以检查传入的意图Intent.getAction()并相应地执行代码.
作为一个新的类,静态就是
public class Reciever1 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String str = intent.getAction();
if(str.equalsIgnoreCase("HELLO1")) {
Log.d("Abrar", "reciever....");
new Thread() {
public void run() {
Log.d("Abrar", "reciever....");
System.out.println("Abrar");
}
}.start();
}
Run Code Online (Sandbox Code Playgroud)
或者,如果放在现有类中,则动态调用
intentFilter = new IntentFilter();
intentFilter.addAction("HELLO1");
//---register the receiver---
registerReceiver(new Reciever1(), intentFilter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36838 次 |
| 最近记录: |