Simple&Natural
[해결중] 네트워크 작업 요청 제한하기 본문
현재 진행중인 프로젝트는 실제 서비스를 목표로 만들고 있다.
그러다보니 연습용 프로젝트와는 달리 사용자들의 예상치 못한 조작에도 폭넓게 대응할 수 있어야 한다.
이번 이슈는
사용자가 고의로 네트워크 작업을 과도하게 요청할 때 이를 막을 수 있는 방법에 대한 고민이다.
현재 특정 API를 이용하여 데이터를 불러오고 있다.
이때 API를 제공하는 쪽에서 초당 1회로 트래픽을 제한하고 있기 때문에 내 경우 자동으로 3초마다 업데이트 되도록 설정을 해놓았다.
그러나 현재 데이터를 요청하는 ViewModel이 파괴되고 다시 만들어지면 3초 이내라도 여러 번 요청이 가능하다.
예를 들어 사용자가 고의적으로 BottomNavigationItem을 여러 번 클릭하는 행위를 하는 경우를 가정할 수 있다.
이렇게 되면 API 엔드포인트 쪽에서 트래픽 제한이 걸리므로 앱이 제대로 동작하지 않는 문제가 생긴다.
이걸 해결할 수 있는 방법으로 여러가지가 있을텐데 가장 효율적인 방법에 대해 고민중에 있다.
1. 현재 있는 nagivation item을 클릭하면 이벤트를 무시
-> bottomNavigation에 onItemReselectedListener를 달아서 구현이 가능하긴 하나,
사용자가 다른 item을 클릭하고 다시 오면 무용지물
2. 데이터를 처리하는 ViewModel을 Fragment가 아니라 Activity에 연결
-> 현재 고려중, 다만 이 경우 특정 Fragment에서만 사용하는 데이터 작업을 Activity LifeCycle에 따라 처리되는 문제가 있다. 결국 싱글톤으로 데이터를 관리하는 것과 다름이 없기 때문.
3. API를 재호출하는 동작까지 1초 이상이 걸리도록 구현
-> Fragment 내부를 뷰페이저로 나누고 첫 페이지에서 스크롤을 해서 넘겨야 api를 호출하는 방식을 고민중이다.
이 경우 대부분 조작시간이 1초 이상이므로 가능할 것 같다. 다만 그렇게 되면 구현을 위해 화면 기획을 바꾸어야 하는
주객전도? 의 문제가 발생해서 이런 방식을 보류중이고 다른 방법을 이용해 조작시간을 확보해야 할 것 같다.
'안드로이드(Android) > 이슈 및 해결' 카테고리의 다른 글
[Android] HTML 문자열 Unescaping 방법 (0) | 2020.12.15 |
---|---|
[Android] SQLITE 및 ROOM 환경에서 Join 쿼리 사용하기 (0) | 2020.11.30 |
Android Studio 4.0 실행 시 Start Failed Error 관련 (0) | 2020.11.02 |
Navigation Component Default BackStack 문제 (0) | 2020.10.21 |
Service bind전 start로 먼저 시작해주어야 하는 경우 (0) | 2020.09.30 |