我想在广播接收器中检查Internet连接,并将结果(布尔标志)设置为全局变量,在整个应用程序中使用,用于if条件;如果断开Internet连接,则在主活动中设置状态imageview为红色图像,如果连接,则设置为绿色。
我遵循了这个主题。但是在Broadcast Receiver中没有getApplication()
;我应该使用getApplicationContext()
代替。
另一方面,这个主题:
当在广播接收器中编写代码时,它不是上下文但在其onReceive方法中给出上下文,您只能调用getApplicationContext()。这也意味着您不能保证在BroadcastReceiver中访问应用程序。
有哪些问题需要考虑?
如何在Broadcast Receiver中访问我的应用程序类?
是否有更好的解决方案来检查Internet连接,设置全局变量并更改我的状态imageview?
问题是在Broadcast Receiver中不能直接访问应用程序类。
您可以通过使用
getApplicationContext()
方法获取全局应用程序上下文来访问应用程序类。或者,您可以考虑使用依赖注入框架(例如Dagger)来处理此问题。是的,有更好的解决方案。您可以使用
ConnectivityManager
类来检查Internet连接,并使用LiveData或RxJava等技术将其状态传递到整个应用程序中,以便轻松更新UI。
if (context.getApplicationContext() instanceof MyApplication) {
。 - friederbluemle