如何使用/定位在谷歌文档和服务广播文档中描述的LocalBroadcastManager ?
我试着谷歌它,但没有可用的代码开始?
文档说,我应该使用它,如果我想做广播内部与我的应用程序的进程,但我不知道在哪里寻找这个。
任何帮助/评论?
更新:我知道如何使用广播,但不知道如何在我的项目中获得LocalBroadcastManager。
如何使用/定位在谷歌文档和服务广播文档中描述的LocalBroadcastManager ?
我试着谷歌它,但没有可用的代码开始?
文档说,我应该使用它,如果我想做广播内部与我的应用程序的进程,但我不知道在哪里寻找这个。
任何帮助/评论?
更新:我知道如何使用广播,但不知道如何在我的项目中获得LocalBroadcastManager。
当前回答
当你玩够了LocalBroadcastReceiver的时候,我会建议你试试Green Robot的EventBus——你一定会意识到它与LBR的区别和有用性。更少的代码,可定制关于接收者的线程(UI/Bg),检查接收者的可用性,粘性事件,事件可以用作数据传递等。
其他回答
我们也可以使用接口相同的broadcastManger在这里我分享broadcastManager的测试代码,但通过接口。
首先,创建如下界面:
public interface MyInterface {
void GetName(String name);
}
2-这是第一个需要实现的类
public class First implements MyInterface{
MyInterface interfc;
public static void main(String[] args) {
First f=new First();
Second s=new Second();
f.initIterface(s);
f.GetName("Paddy");
}
private void initIterface(MyInterface interfc){
this.interfc=interfc;
}
public void GetName(String name) {
System.out.println("first "+name);
interfc.GetName(name);
}
}
3-这里是实现相同接口的第二个类,其方法自动调用
public class Second implements MyInterface{
public void GetName(String name) {
System.out.println("Second"+name);
}
}
因此,通过这种方法,我们可以使用与broadcastManager功能相同的接口。
在Eclipse中,最终我不得不通过右键单击我的项目并选择添加兼容性/支持库:
Android工具->添加支持库
一旦添加了它,我就可以在代码中使用LocalBroadcastManager类了。
一个实现LocalBroadcastManager的Activity和Service的例子可以在开发者文档中找到。我个人觉得它非常有用。
编辑:该链接已从网站上删除,但数据如下: https://github.com/carrot-garden/android_maven-android-plugin-samples/blob/master/support4demos/src/com/example/android/supportv4/content/LocalServiceBroadcaster.java
如何将全局广播更改为局部广播
1)创建实例
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
2)用于注册BroadcastReceiver
取代
registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));
与
localBroadcastManager.registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));
3)用于发送广播信息
取代
sendBroadcast(intent);
与
localBroadcastManager.sendBroadcast(intent);
4)注销广播信息
取代
unregisterReceiver(mybroadcast);
与
localBroadcastManager.unregisterReceiver(mybroadcast);
我更愿意全面地回答。
LocalbroadcastManager included in android 3.0 and above so you have to use support library v4 for early releases. see instructions here Create a broadcast receiver: private BroadcastReceiver onNotice= new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // intent can contain anydata Log.d("sohail","onReceive called"); tv.setText("Broadcast received !"); } }; Register your receiver in onResume of activity like: protected void onResume() { super.onResume(); IntentFilter iff= new IntentFilter(MyIntentService.ACTION); LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, iff); } //MyIntentService.ACTION is just a public static string defined in MyIntentService. unRegister receiver in onPause: protected void onPause() { super.onPause(); LocalBroadcastManager.getInstance(this).unregisterReceiver(onNotice); } Now whenever a localbroadcast is sent from applications' activity or service, onReceive of onNotice will be called :).
编辑:你可以在这里阅读完整的教程LocalBroadcastManager:内部应用程序消息传递