호출
-
안드로이드 AsyncTask의 doInBackground 호출 안됨Android 2020. 7. 19. 22:40
AsyncTask를 사용하던 중 doInBackground()가 호출이 되지 않는 상황을 겪게 되었다. 복잡한 앱이 아닌 단순 클릭킹 프로토타입을 만들던 중에 일어난 일이라 황당할 따름이었다. 대략 화면을 터치하면 화면이 전환되며 4개의 작은 동영상이 동시에 재생되는 너무나 간단한 작업이라 아무 생각 없이 AsyncTask 4개를 돌렸는데 1개만 재생이 되는 현상이 나타났다. 찾아보니 문제의 원인은 AsyncTask가 이름의 뉘앙스와는 어울리지 않게 기본적으로 싱글 스레드에서 실행이 되었기 때문이었다. 영상 재생 후 다른 작업을 같이 하려고 무한루프에서 2초 정도씩 슬립하며 추가 작업을 수행했는데 이게 문제였다. 이 무한 루프가 끝날 때까지 다른 AsyncTask들이 끝날 기약없는 대기를 타고 있었던 것..
-
안드로이드에서 Rest API 호출하기Android 2019. 5. 30. 23:40
최근의 안드로이드 앱들은 서버와의 연결이 필수적이다. 과거에는 성능 등의 문제로 Native Server가 쓰이는 경우가 많았지만, 현대에 들어서는 Restful Web API를 통해 서버와 교신을 하는 경우가 늘어났다. 안드로이드 앱은 코틀린으로 작성되었거나 NDK 로 쓰여진 부분을 제외하면 자바 기반으로 쓰여지는데, 다행히 Java는 전통적으로 서버 사이드에 많이 쓰여왔기에 http 형태의 스트림을 처리하기에 알맞은 내장 클래스들을 대부분 가지고 있다. 이번에는 특별한 라이브러리를 쓰지 않고 Java만을 이용해 간단히 Rest API를 호출하는 방법을 살펴보려 한다. 필요한 클래스는 다음과 같다. Class Description HttpURLConnection HTTP 연결을 만든다 InputStre..