Broadcastreceiver中Applicationcontext的不同实例

我想从广播接收者(在清单中注册)访问我的MyApp(扩展应用程序)中的“全局”变量,例如多项活动。现在我似乎有MyApp的不同实例:一个用于BCR,一个用于活动。某事可以帮我解决问题吗? 非常感谢 约尔格     
已邀请:
我从中得到的是你正在尝试创建一个方法来拥有一个Context对象。首先,要做到这一点,你需要一个Myton的Singleton模式来创建你的“全局”变量。但是出于以下原因,我会建议不要这样做: 默认情况下,不同的应用程序组件具有不同的上下文(base,application)。 清单中定义的BroadcastReceiver由OS调用,而不是由您的应用程序调用。 对上下文对象使用Singleton Pattern会导致一些非常讨厌的依赖。 你违背了Android Framework的设计和美感。 我怀疑你这样做的原因是你的MyApp课程可以开始不同的活动。这是有道理的,但是......你可以从几乎任何地方获得一个Context对象。 Android中的许多东西都扩展了ContextWrapper类(想想带有Object类的Java对象)。所以真的没有理由拥有这个“全球”的例子。实际上,您的BroadcastReceiver的onReceive()方法接受上下文参数。您可以使用它来开始活动,而不是。 如果这不是你想要MyApp单例类的原因 - 并且有合理的理由需要它,我会看看Bill Pugh设计的实现,因为考虑到线程同步和锁定它是Java中最安全的。 希望这可以帮助。请记住,不要与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)
而不是
new BroadcastReceiver()
。     

要回复问题请先登录注册