我有一个需要从后端服务器获取一些数据的按钮。设备未连接到WiFi /移动/互联网时,该按钮被禁用。问题是,当按下WiFi按钮时,它需要一些时间才能真正连接(2-3秒)。如何知道设备何时连接,以便我可以在这段时间内显示一个ProgressBar?谢谢
答案 0 :(得分:2)
BroadcastReceiver
与IntentFilter
结合使用,并进行ConnectivityManager.CONNECTIVITY_ACTION
操作。检出NetworkInfo.State
DOC并选择合适的报表(使用所需的回调创建自己的侦听器)
如果您只能负担newer APIs,则可以使用NetworkCallback
,在DOC中,您可以看到所有方法,请适当使用。但是令人遗憾的是,由于Android的碎片化,我怀疑是第一个更好的方法。
还请记住,由于Android N广播在清单中声明时不会触发,请使用Java
示例,并在Activity
生命周期内取消注册
答案 1 :(得分:0)
fun isInternetOncheck(context: Context): Boolean {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = cm.activeNetworkInfo
return networkInfo != null && networkInfo.isConnectedOrConnecting
}
if (!NetworkCaller.isInternetOncheck(context!!)) {
println("no internet connection")
} else {
fetchDataFromServer()
}
fetchDataFromServer(){
showProgressbar()
......
......
//code for fetching data
......
......
hideProgressbar()
}