访问Broadcast Receiver中的应用程序类

Dr.*_*cky 9 android broadcastreceiver android-lifecycle android-broadcast

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

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

另一方面,这个话题:

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

  1. 有什么顾虑?

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

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

Lal*_*ani 32

您可以使用其上下文访问您的Application课程BroadCastReceiver,

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

  • 目前getApplicationContext返回的对象恰好是应用程序实例本身是一个实现细节,API肯定无法保证. (8认同)
  • 要防止ClassCastExceptions,您可以检查:`if(context.getApplicationContext()instanceof MyApplication){` (4认同)