如何使用/定位在谷歌文档和服务广播文档中描述的LocalBroadcastManager ?

我试着谷歌它,但没有可用的代码开始?

文档说,我应该使用它,如果我想做广播内部与我的应用程序的进程,但我不知道在哪里寻找这个。

任何帮助/评论?

更新:我知道如何使用广播,但不知道如何在我的项目中获得LocalBroadcastManager。


当前回答

我们也可以使用接口相同的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功能相同的接口。

其他回答

通过在AndroidManifest.xml文件中声明一个标签(也称为static)

<receiver android:name=".YourBrodcastReceiverClass"  android:exported="true">
<intent-filter>
    <!-- The actions you wish to listen to, below is an example -->
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>

你会注意到上面声明的广播接收器有一个属性export = " true "。此属性告诉接收器它可以接收来自应用程序范围之外的广播。 2. 或者通过向registerReceiver动态注册一个实例(即所谓的上下文注册)

public abstract Intent registerReceiver (BroadcastReceiver receiver, 
            IntentFilter filter);

public void onReceive(Context context, Intent intent) {
//Implement your logic here
}

There are three ways to send broadcasts: The sendOrderedBroadcast method, makes sure to send broadcasts to only one receiver at a time. Each broadcast can in turn, pass along data to the one following it, or to stop the propagation of the broadcast to the receivers that follow. The sendBroadcast is similar to the method mentioned above, with one difference. All broadcast receivers receive the message and do not depend on one another. The LocalBroadcastManager.sendBroadcast method only sends broadcasts to receivers defined inside your application and does not exceed the scope of your application.

我更愿意全面地回答。

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:内部应用程序消息传递

在Eclipse中,最终我不得不通过右键单击我的项目并选择添加兼容性/支持库:

Android工具->添加支持库

一旦添加了它,我就可以在代码中使用LocalBroadcastManager类了。


我们也可以使用接口相同的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功能相同的接口。

一个实现LocalBroadcastManager的Activity和Service的例子可以在开发者文档中找到。我个人觉得它非常有用。

编辑:该链接已从网站上删除,但数据如下: https://github.com/carrot-garden/android_maven-android-plugin-samples/blob/master/support4demos/src/com/example/android/supportv4/content/LocalServiceBroadcaster.java