访问Broadcast Receiver中的应用程序类

时间:2014-07-18 13:01:19

标签: broadcastreceiver android-lifecycle android-broadcast android

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

我关注this主题。但广播接收器中没有getApplication();我应该使用getApplicationContext()代替。

另一方面,this主题:

  

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

  1. 有什么顾虑?

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

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

2 个答案:

答案 0 :(得分:31)

您可以使用其上下文

访问Application中的BroadCastReceiver课程
 @Override
 public void onReceive(final Context context, Intent intent) {
   MyApplication mApplication = ((MyApplication)context.getApplicationContext());
 }

答案 1 :(得分:2)

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

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,它将在接收者调用之前被调用。

  

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