Android P wifi PNO 검색

PNO 즉 Preferred Network Offload 로 시스템 이 휴면 할 때 와 이 파 이 를 연결 하 는 데 사 용 됩 니 다.
네 가지 장면
화면 상태:
 WiFi Settings  ,  WiFi     ,         10s。
  WiFi Settings  ,  WiFi     ,         2           ,   20s,   160s.

             ,     :interval*(2^n) .

화면 꺼 짐 상황: 저 장 된 네트워크 가 있 고 연결 되 어 있 으 며 스 캔 하지 않 습 니 다. 저 장 된 네트워크 가 있 고 연결 이 없습니다. PNO 스 캔 (저 장 된 네트워크 만 스 캔), 간격 min = 20s max = 160 s
기타 상황: 네트워크 를 저장 하지 않 았 을 때 고정 스 캔 시간 간격 은 5min 입 니 다.밝 은 화면 상황 WiFi 설정 인터페이스
WiFi Setting 인터페이스 에 들 어 갈 때 Activity 에 대응 하 는 onResume () 을 호출 합 니 다.
onResume -> WifiSettings.java
  mWifiTracker.startTracking ->
    startTracking -> WifiTracker.java
      resumeScanning ->
        mScanner.resume ->
         resume->
           sendEmptyMessage(MSG_SCAN); ->
             handleMessage ->   //Scanner 
               mWifiManager.startScan -> //  WiFi Service    。
               sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS); //          

WIFI_RESCAN_INTERVAL_MS 는 기본적으로 10 초 로 정의 합 니 다.
// Combo scans can take 5-6s to complete - set to 10s.
private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;

와 이 파이 Setting 과 비 Settings 인터페이스의 스 캔 은 병존 작업 에 관여 하지 않 습 니 다. 그 중에서 35 초 와 75 초 는 비 와 이 파이 인터페이스의 주기 스 캔 입 니 다. 40 초 간격 으로 두 번 째 (20 x 2) 스 캔 임 을 설명 합 니 다.다른 것 은 와 이 파이 Settings 인터페이스 에서 10 초 에 한 번 씩 스 캔 합 니 다.비 WiFi 설정 인터페이스
// Start a connectivity scan. The scan method is chosen according to
// the current screen state and WiFi state.
startConnectivityScan ->
  startPeriodicScan ->  //mScreenOn true
    mPeriodicSingleScanInterval = PERIODIC_SCAN_INTERVAL_MS;    //       20s
    startPeriodicSingleScan ->
      mPeriodicSingleScanInterval *= 2; //     ,      ,      MAX_PERIODIC_SCAN_INTERVAL_MS 160s
      startSingleScan ->
        mScanner.startScan  //    

화면 꺼 짐 상황
startConnectivityScan ->
  startConnectedPnoScan -> //screenOff  WiFi        
    scanSettings.periodInMs = CONNECTED_PNO_SCAN_INTERVAL_MS; //       160S
    mScanner.startConnectedPnoScan ->
      startPnoScan
  startDisconnectedPnoScan -> //screenOff  WiFi           
    scanSettings.periodInMs = DISCONNECTED_PNO_SCAN_INTERVAL_MS; //       20S
    mScanner.startDisconnectedPnoScan ->
      startPnoScan

네트워크 상태 저장 하지 않 음
class DisconnectedState extends State {
/**
 * If we have no networks saved, the supplicant stops doing the periodic scan.
 * The scans are useful to notify the user of the presence of an open network.
 * Note that these are not wake up scans.
 */
if (mNoNetworksPeriodicScan != 0 && !mP2pConnected.get()
        && mWifiConfigManager.getSavedNetworks().size() == 0) {
    sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN,
            ++mPeriodicScanToken, 0), mNoNetworksPeriodicScan);
}

}
mNoNetworksPeriodicScan 의 값 은 frameworks / base / core / res / res / values / config. xml 에 정의 되 었 습 니 다.
300000

5min 으로 보 여요.
Android wifi 스 캔 메커니즘 (Android O):https://blog.csdn.net/h784707460/article/details/79658950 Android wifi PNO 스 캔 프로 세 스 (Andriod O):https://blog.csdn.net/h784707460/article/details/79702275

좋은 웹페이지 즐겨찾기