访问Broadcast Receiver中的应用程序类

我想检查广播接收器中的互联网连接; 并将结果(一个布尔标志)设置为全局variables,以便在整个应用程序中使用它,如果条件; 如果互联网断开连接,请在主活动中将状态图像视图设置为红色图像,如果已连接,则将其设置为绿色。

我跟着这个话题。 但广播接收器中没有getApplication() ; 而且我应该使用getApplicationContext()代替。

另一方面, 这个主题:

当在广播接收器中编写代码时,它不是上下文但在其onReceive方法中给出了上下文,您只能调用getApplicationContext()。 这也意味着您无法保证能够在BroadcastReceiver中访问您的应用程序。

  1. 有什么顾虑?

  2. 如何在广播Receiver中访问我的应用程序类?

  3. 是否有更好的解决方案来检查互联网连接,设置全局variables和更改我的状态imageview?

您可以使用其上下文访问BroadCastReceiverApplication类,

  @Override public void onReceive(final Context context, Intent intent) { MyApplication mApplication = ((MyApplication)context.getApplicationContext()); } 

也许它会对某人有所帮助。 如果使用自己的应用类:

 public class App extends Application { private static App sInstance; public static App get() { return sInstance; } @Override public void onCreate() { sInstance = this; super.onCreate(); } } 

然后,您可以在广播接收器中使用App.get() 。 根据onCreate() docs ,它将在接收器调用之前被调用。

在应用程序启动时调用,在创建任何活动,服务或接收方对象(不包括内容提供程序)之前调用。