有没有办法检测Android 13中的网络连接和断开事件?

问题描述 投票:0回答:1

我正在寻找一种解决方案来检测我的 Android 项目中的网络事件,特别是连接和断开连接事件。

在旧的 Android 版本中,我们能够从广播接收器监听此类事件。 工作管理器有一些需要使用的约束,但是我认为它不适合这里的模式,因为库没有公开约束的状态(在本例中为网络状态)。即使是这样,如果用户在 15 分钟内多次切换互联网,15 分钟的限制也会很痛苦。

Job Scheduler 适合这种情况吗?它可以检测网络连接和断开连接事件吗?

android android-workmanager android-jobscheduler android-13 android-tiramisu
1个回答
0
投票

对于这种情况,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);
}
© www.soinside.com 2019 - 2024. All rights reserved.