如何从Android向其他Java类广播?

如何从Android向其他Java类广播?,java,android,android-broadcast,Java,Android,Android Broadcast,是否有可能从“普通”Java类在Android中发送广播消息 我这样试过: private void sendBroadcastMessage(String intentFilterName) { Intent intent = new Intent(intentFilterName); intent.putExtra("response", response); sendBroadcast(intent); } 但是最后一行出现了一个错误 未为类型

是否有可能从“普通”Java类在Android中发送广播消息

我这样试过:

private void sendBroadcastMessage(String intentFilterName) {
    Intent intent = new Intent(intentFilterName);
    intent.putExtra("response", response);
    sendBroadcast(intent);
}
但是最后一行出现了一个错误

未为类型Webserver\u连接定义sendBroadcast(Intent)方法


如何解决此问题?

如果您试图向其他应用程序或操作系统发送广播,则需要在
上下文中使用
发送广播()。将
上下文
传递到
sendBroadcastMessage()
或让
Webserver\u连接
保持
上下文
,注意可能的内存泄漏


如果您试图在应用程序内进行通信,请切换到。这也需要一个
上下文来创建
LocalBroadcastManager
实例。但是,它将提高性能和安全性。或者,完全从广播切换并使用另一个进程内事件总线实现,如greenrobot的EventBus或Square的Otto,这两种实现都不需要
上下文
如果您试图将广播发送到其他应用程序或操作系统,则需要在
上下文
上使用
发送广播()。将
上下文
传递到
sendBroadcastMessage()
或让
Webserver\u连接
保持
上下文
,注意可能的内存泄漏

如果您试图在应用程序内进行通信,请切换到。这也需要一个
上下文来创建
LocalBroadcastManager
实例。但是,它将提高性能和安全性。或者,完全从广播中切换,并使用另一个进程内事件总线实现,如greenrobot的EventBus或Square的Otto,这两种实现都不需要
上下文
您可以这样做:

private void sendBroadcastMessage(Context context, String intentFilterName) {
    Intent intent = new Intent(intentFilterName);
    intent.putExtra("response", response);
    context.sendBroadcast(intent);
}
但是,您可以考虑:

private void sendBroadcastMessage(WeakReference<Context> weakContext, String intentFilterName) {
    Intent intent = new Intent(intentFilterName);
    intent.putExtra("response", response);
    weakContext.get().sendBroadcast(intent);
}
private void sendBroadcastMessage(WeakReference weakContext,String intentFilterName){
意向意向=新意向(意向过滤名称);
意向。额外(“响应”,响应);
weakContext.get().sendBroadcast(intent);
}
如果将上下文存储在本地,否则对象可能会保留对
上下文的引用(导致内存泄漏)

您可以执行以下操作:

private void sendBroadcastMessage(Context context, String intentFilterName) {
    Intent intent = new Intent(intentFilterName);
    intent.putExtra("response", response);
    context.sendBroadcast(intent);
}
但是,您可以考虑:

private void sendBroadcastMessage(WeakReference<Context> weakContext, String intentFilterName) {
    Intent intent = new Intent(intentFilterName);
    intent.putExtra("response", response);
    weakContext.get().sendBroadcast(intent);
}
private void sendBroadcastMessage(WeakReference weakContext,String intentFilterName){
意向意向=新意向(意向过滤名称);
意向。额外(“响应”,响应);
weakContext.get().sendBroadcast(intent);
}

如果您将上下文存储在本地,否则您的对象可能会保留对
上下文的引用(导致内存泄漏)

假设您的java类是B

class B {
    Context context;
    public B(Context context) {
      this.context = context;
      sendBroadCast(context);
    }
    public void sendBroadCast(Context context){
      Intent intent = new Intent(context, A.class);
      context.sendBroadcast(intent);
    }
你需要这样做。
sendBroadCast是上下文的函数。若你们只需要在应用程序中发送广播,那个么你们应该使用本地广播,假设你们的java类是B

class B {
    Context context;
    public B(Context context) {
      this.context = context;
      sendBroadCast(context);
    }
    public void sendBroadCast(Context context){
      Intent intent = new Intent(context, A.class);
      context.sendBroadcast(intent);
    }
你需要这样做。
sendBroadCast是上下文的函数。如果您只需要在应用程序中发送广播,则应使用本地广播

您必须从上下文发送广播。为什么需要从没有上下文的java类发送广播!!您必须从上下文发送广播。为什么需要从没有上下文的java类发送广播!!