我在主要活动的单独文件中注册了一个广播投射接收器,并根据广播接收器中收到的通知,我想在主要活动中执行一些操作。
我的问题是,将广播接收器的通知传递给主要活动的推荐方法是什么?应该在广播接收文件中注册的每个Action iam中制作公共方法吗?或者应该使用将在主要活动中实现的接口。
注意:广泛的演员接收者已注册7个动作
答案 0 :(得分:2)
创建一个接口并让你的Main活动实现它,这有助于你的MainActivity对象中的Polymorphism Pass作为BroadcastListener文件的接口,并根据动作调用接口中的相应方法。(因为你要么提到有公共方法,我相信你会有对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();
}
}
}