我正在寻找一种解决方案来检测我的 Android 项目中的网络事件,特别是连接和断开连接事件。
在旧的 Android 版本中,我们能够从广播接收器监听此类事件。 工作管理器有一些需要使用的约束,但是我认为它不适合这里的模式,因为库没有公开约束的状态(在本例中为网络状态)。即使是这样,如果用户在 15 分钟内多次切换互联网,15 分钟的限制也会很痛苦。
Job Scheduler 适合这种情况吗?它可以检测网络连接和断开连接事件吗?
对于这种情况,ConnectivityManager系统服务可以很好地检测频繁的网络变化
class NetworkStateManagement(val context:Context)
:ConnectivityManager.NetworkCallbacks() {
private lateinit var connectivityManager
init {
connectivityManager = context.getSystemService(CONNECTIVITY_SERVICE)
as ConnectivityManager
}
override fun onAvailable(network : Network?) {
super.onAvailable(network)
Log.d(TAG, "onAvailable() called: Connected to network")
}
@Override fun onLost(network : Network?) {
super.onLost(network);
Log.e(TAG, "onLost() called: Lost network connection");
}
/**
* Registers the Network-Request callback
* (Note: Register only once to prevent duplicate callbacks)
*/
open fun registerNetworkCallbackEvents() {
Log.d(TAG, "registerNetworkCallbackEvents() called");
connectivityManager.registerNetworkCallback(mNetworkRequest, context);
}