如何将数据从广播接收器传递到 main activity
how to pass data from broad cast receiver to main activity
我在与主 activity 不同的文件中注册了广播接收器,根据广播接收器中收到的通知,我想在主 activity 中执行一些操作.
我的问题是,将通知从广播接收器传递到主要 activity 的推荐方法是什么?应该在广播接收器文件中注册的每个 Action iam 中创建一个 public 方法吗?或者应该使用将在主 activity.
中实现的接口
注意:广播接收者注册了 7 个动作
创建一个接口并让您的 Main activity 实现它,这有助于多态性将您的 MainActivity 对象作为接口传递给 BroadcastListener 文件,并根据操作在接口中调用适当的方法。(既然你提到有 public 方法,我相信你会有对 MainActivity 对象的引用)。实现它更像观察者模式。
//BroadcastObserver.java
public interface BroadcastObserver {
//methods methods
public void foo();
}
//MainActivity.java
public class MainActivity extends Activity implements BroadcastObserver{
@Override
public void foo(){
}
}
public class MyClass {
BroadcastObserver static observer; // this should be set to by passing your MainActivity object, may be at the time when you initiate your MyClass object
public static class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "!!!!.",
Toast.LENGTH_LONG).show();
if(someaction){
observer.foo();
}
}
}
我在与主 activity 不同的文件中注册了广播接收器,根据广播接收器中收到的通知,我想在主 activity 中执行一些操作.
我的问题是,将通知从广播接收器传递到主要 activity 的推荐方法是什么?应该在广播接收器文件中注册的每个 Action iam 中创建一个 public 方法吗?或者应该使用将在主 activity.
中实现的接口注意:广播接收者注册了 7 个动作
创建一个接口并让您的 Main activity 实现它,这有助于多态性将您的 MainActivity 对象作为接口传递给 BroadcastListener 文件,并根据操作在接口中调用适当的方法。(既然你提到有 public 方法,我相信你会有对 MainActivity 对象的引用)。实现它更像观察者模式。
//BroadcastObserver.java
public interface BroadcastObserver {
//methods methods
public void foo();
}
//MainActivity.java
public class MainActivity extends Activity implements BroadcastObserver{
@Override
public void foo(){
}
}
public class MyClass {
BroadcastObserver static observer; // this should be set to by passing your MainActivity object, may be at the time when you initiate your MyClass object
public static class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "!!!!.",
Toast.LENGTH_LONG).show();
if(someaction){
observer.foo();
}
}
}