Android Broadcastreceiver中Applicationcontext的不同实例
我想从broadcastreceiver(在清单中注册)访问MyApp(扩展应用程序)中的“全局”变量,例如多个活动。现在我似乎有了不同的MyApp实例:一个用于BCR,一个用于活动。有人能帮我解决问题吗? 非常感谢Android Broadcastreceiver中Applicationcontext的不同实例,android,global-variables,broadcastreceiver,Android,Global Variables,Broadcastreceiver,我想从broadcastreceiver(在清单中注册)访问MyApp(扩展应用程序)中的“全局”变量,例如多个活动。现在我似乎有了不同的MyApp实例:一个用于BCR,一个用于活动。有人能帮我解决问题吗? 非常感谢 Joerg我从中得到的是,您正在尝试创建一个方法来拥有单个上下文对象。首先,要做到这一点,您需要MyApp的单例模式来创建“全局”变量。然而,出于以下原因,我不建议这样做: 默认情况下,不同的应用程序组件具有不同的上下文(基础、应用程序) 清单中定义的BroadcastReceiv
Joerg我从中得到的是,您正在尝试创建一个方法来拥有单个上下文对象。首先,要做到这一点,您需要MyApp的单例模式来创建“全局”变量。然而,出于以下原因,我不建议这样做:
希望这有帮助。记住,不要对抗SDK,让它为你工作吧 我遇到了类似的问题,我能够使用以下模式访问活动中的对象:
public class MyReceiver extends android.content.BroadcastReceiver {
private Object _object;
public MyReceiver(Someobject) {
_object = the object;
}
@Override
public void onReceive(Context context, Intent intent) {
Do something to the object.
}
}
然后调用
MyReceiver(theobject)
而不是newbroadcastReceiver()
如何声明“全局”变量?当然,它是MyApp类的成员。我自己找到了一个解决方案,但我仍然有一个问题:(在清单中)很好,在我找到之前,我也有同样的问题。您是如何解决这个问题的?“remote”运行在一个单独的进程中,因此您永远不会看到在另一个进程中创建的任何Java对象。您应该避免在BroadcastReceivers
中做任何“有意义的”事情,因为它们位于“借用”线程(不是您的活动/服务线程)上,并且受ANR计时器的约束!尽可能少地将意图
发送给服务
或活动
。