如何知道设备何时连接到 WiFi/Mobile/Internet?
How know when a device is connecting to WiFi/Mobile/Internet?
我有一个按钮需要从后端服务器获取一些数据。当设备未连接到 WiFi/Mobile/Internet 时,该按钮被禁用。问题是按下 WiFi 按钮时需要一些时间才能真正连接(2-3 秒)。如何知道设备何时连接以便我可以在那段时间显示 ProgressBar?谢谢
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()
}
THIS SO question. In short you should use BroadcastReceiver
with IntentFilter
with ConnectivityManager.CONNECTIVITY_ACTION
action. Check out NetworkInfo.State
DOC 中的大量方法并选择适合报告的方法(创建自己的具有所需回调的侦听器)
如果你只负担得起 then you can use NetworkCallback
, in DOC你可以看到所有的方法,使用appriopiate。但我怀疑由于 Android 碎片,更好的方法是第一个提到的。
还请记住,由于 Android N 此广播在清单中声明时不会触发,请使用 Java
示例并(取消)注册 Activity
生命周期
我有一个按钮需要从后端服务器获取一些数据。当设备未连接到 WiFi/Mobile/Internet 时,该按钮被禁用。问题是按下 WiFi 按钮时需要一些时间才能真正连接(2-3 秒)。如何知道设备何时连接以便我可以在那段时间显示 ProgressBar?谢谢
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()
}
THIS SO question. In short you should use BroadcastReceiver
with IntentFilter
with ConnectivityManager.CONNECTIVITY_ACTION
action. Check out NetworkInfo.State
DOC 中的大量方法并选择适合报告的方法(创建自己的具有所需回调的侦听器)
如果你只负担得起NetworkCallback
, in DOC你可以看到所有的方法,使用appriopiate。但我怀疑由于 Android 碎片,更好的方法是第一个提到的。
还请记住,由于 Android N 此广播在清单中声明时不会触发,请使用 Java
示例并(取消)注册 Activity
生命周期