투케이2K

72. (TWOK/LOGIC) [Mobile] android 안드로이드 Wifi 스캔 수행 시 지속 스캔 시도 및 무한 리시버 응답 대기 방어 로직 - 핸들러 타임 아웃 설정 본문

투케이2K 로직정리

72. (TWOK/LOGIC) [Mobile] android 안드로이드 Wifi 스캔 수행 시 지속 스캔 시도 및 무한 리시버 응답 대기 방어 로직 - 핸들러 타임 아웃 설정

투케이2K 2024. 9. 24. 19:42

[로직 정리]

정리 로직 : Mobile

상태 : [Mobile] android 안드로이드 Wifi 스캔 수행 시 지속 스캔 시도 및 무한 리시버 응답 대기 방어 로직 - 핸들러 타임 아웃 설정

 

[설 명]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java , Kotlin

- 개발 툴 : Android Studio

- 구현 기술 : Wifi Scan List

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 정리]
// --------------------------------------------------------------------------------------

1. 앱 위치 권한 및 GPS 설정, 근처기기 권한 부여 상태 체크 수행


2. 정상적으로 해당 권한이 부여 된 경우 WifiManager 생성 및 와이파이 스캔 시도 수행

  >> WifiManager wifiManager = (WifiManager) mContext.getSystemService(WIFI_SERVICE);
       wifiManager.startScan();


3. 상위 코드 (startScan) 밑에 핸들러 등록 및 타임 아웃 기능 정의 실시 (30 초 설정)

  int delayTime = 30000;

  Handler handler = new Handler(Looper.getMainLooper());
  handler.postDelayed(new Runnable() {
      @Override
      public void run() {
          
          // [로딩 프로그레스 종료]
          C_Ui_View.stopLoadingShowAlert(SensorGuardRegParentActivity.this);

          // [토스트 메시지 출력]
          String message = "※ 와이파이 스캔 타임 아웃 ..";
          message += "\n" + "\n" + "(지속적 스캔 시 OS 제한이 발생할 수 있습니다 .. 앱 종료 및 잠시 후 다시 시도해주세요)";
          C_Ui_View.toastLongError(SensorGuardRegParentActivity.this, message);
      }

  }, delayTime);


4. BroadcastReceiver 쪽으로 정상적으로 와이파이 스캔 목록이 내려온 경우 해당 목록 파싱 수행 및 예약 된 핸들러 작업 취소 수행


5. 참고 : startScan 기능은 안드로이드 os 9 부터 Deprecated 되었으며, 제한 정책 설정 됨

  >> 앱이 네트워크 성능을 개선하고 배터리 수명을 개선하기 위해 요청할 수 있는 스캔 수를 추가로 제한

  >> 포그라운드 앱은 2분마다 4번 스캔으로 제한

// --------------------------------------------------------------------------------------







// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://blog.naver.com/kkh0977/223368115419?trackingCode=blog_bloghome_searchlist

https://blog.naver.com/kkh0977/223591408711?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments