我想检查广播接收器中的互联网连接;并将结果(一个布尔标志)设置为全局变量,以便在整个应用程序中使用它,如果条件;如果互联网断开连接,请在主活动中将状态图像视图设置为红色图像,如果已连接,则将其设置为绿色。
我关注this主题。但广播接收器中没有getApplication()
;我应该使用getApplicationContext()
代替。
另一方面,this主题:
在广播接收器中编写代码时,不是上下文而是 在其onReceive方法中给出了一个上下文,你只能调用 getApplicationContext()。这也意味着您无法保证 在BroadcastReceiver中访问您的应用程序。
有什么顾虑?
如何在广播接收器中访问我的应用程序类?
是否有更好的解决方案来检查互联网连接,设置全局变量并更改状态图像视图?
答案 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,它将在接收者调用之前被调用。
在应用程序启动时,在创建任何活动,服务或接收方对象(不包括内容提供程序)之前调用。