전체보기

· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 필자는 예외 처리에 대해서 에러 발생하면 catch 문으로 가는 것, 그리고 네트워킹 같은 try catch 구문이 필요한 부분은 그냥 꼭 써줘야되는구나 라는 부끄럽지만 무지한 생각을 가지고 있었습니다. 무지한 저를 바꾸기 위해 첫 번째로 예외처리의 정의와 목적, 더 나아가서 Checked Exception vs Unchecked Exception 에 대한 대용도 다뤄보도록 하겠습니다. 에러(error) vs 예외(exception) 프로그램을 돌렸을 때 오작동이나 비정상적으로 종료되는 원인을 오류나 에러라고 합니다. 이 에러는 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글 자 그대로 컴파일 시 발생하는 에러와 실행 도중에 발생하는..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론안드로이드에서 UI를 조작할 수 있는 방법에 대해서 두 가지를 배웠습니다. Handler와 Looper 사용하기 runOnUiThread( ) 사용하기 두 가지 사용법을 자세히 읽어보시면 어렵지 않게 따라할 수 있겠지만 이번에는 안드로이드에서 스레드나 메시지 루프 등의 원리를 이해하지 않아도 하나의 클래스에서 UI 작업을 쉽게 할 수 있게 해주는 AsyncTask 클래스에 대해서 배워보도록 하겠습니다. 이해하시면 너무 간단하고 쓰기 편하기 때문에 이것만 사용하겠다 하실 수도 있지만 저처럼 큰 코 다칠 수 있는 AsyncTask의 단점도 알려드리도록 하겠습니다. AsyncTask 의 개념 AsyncTaskd의 동작 순서를 먼저 설명하고, 개념을 ..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전 포스팅 (Thread, Handler, Looper를 이용한 백그라운드 처리) 에서 언급했듯이, 안드로이드 OS 는 UI 자원에 Main Thread와 Sub Thread가 동시 접근하여 동기화 이슈를 발생시키는 것을 방지시키기 위해 UI 자원 사용은 UI Thread에서만 가능하도록 만들었다고 했습니다. 그래서 Handler.post( ) 와 같은 스레드 간 메시지 전달을 통해서 구현하도록 했었죠. 안드로이드에서 제공하는 Message나 Runnable 객체를 UI 스레드 쪽에서 동작시키기 원할 경우 사용하는 방법 4가지가 있습니다. Activity.runOnUiThread( ) Handler.post( ) View.post( ) As..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 안드로이드의 UI는 기본적으로 메인스레드를 주축으로하는 싱글 스레드 모델로 동작하므로, 메인 스레드에서는 긴 작업을 피해야 합니다. 즉 긴 작업은 여분의 다른 스레드에서 실행하고 UI를 바꿀 때는 UI 스레드로 접근하도록 스레드가나 통신 방법을 사용해야합니다. 이 때 사용하는 것이 Message나 Runnable 객체를 받아와 다른 곳으로 전달해주는 Handler 클래스입니다. 이미지를 받아와 UI에 표시해줄 때, AsyncTask와 더불어 많이 사용하고 있죠. Handler와 Looper의 필요성 핸들러를 생성하는 스레드만이 다른 스레드가 전송하는 Message와 Runnable 객체를 받을 수 있다. Handler와 Looper 이 복잡한..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 자바를 배웠다면 스레드라는 단어는 익숙할 것이다. 필자가 스레드를 처음 배울 때 읽었던 글을 인용해 쉽게 풀어보도록 하겠다. 밥 먹을 때 취사 버튼 누르고 밥 다 되는 동안 식탁을 차리는 것과 유사하다. 국을 끓인다던가, 계란말이를 한다던가, 보통 압력밥솥의 취사버튼을 누르고 아무 것도 하지 않다가 완료 후 식사를 준비하지는 않는다. 이처럼 무언가를 백그라운드로 돌려놓고 다른 여러가지 일을 하는 것이 스레드라고 할 수 있다. Thread 의 필요성외부 Thread 가 없이 Main Thread 만으로만 구현하게 된다면, 이러한 문제가 생긴다. 어떠한 버튼을 눌렀을 때 Main Thread 내부적으로 10초 이상이 걸리는 작업을 한다고 치면, ..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 안드로이드 앱을 구현하여 돌리다보면, 또는 플레이스토어에 올라온 앱임에도 불구하고, 앱의 중지를 알리는 메시지를 심심치 않게 봤을 것이다. 이러한 시스템 이슈를 알리는 메시지 중 하나인 ANR에 대해서 알아보고 어떻게 피할 수 있을까? 생각해보도록 하겠다. ANR이란? ANR은 Application Not Responding의 약자로 그대로 해석해보면 의미를 쉽게 파악할 수 있다. '애플리케이션이 응답하지 않는다.' 인 것이다. 이 에러의 원인은 Main Thread(UI Thread)가 일정 시간 어떤 Task에 잡혀 있으면 발생하게 된다. ANR의 발생 요인ANR은 대체로 아래의 상황에서 발생하게 된다. 애플리케이션이 UI 스레드에 어떠한..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. [목차] 리스트뷰의 개념 및 사용법 리스트뷰의 성능 최적화 서론 이전 포스팅에서 안드로이드 애플리케이션에서 가장 많이 애용되는 View 중 하나인 LiestView의 개념과 사용법을 다뤘다. 아이템 별로 많은 정보, 이미지를 사용할 때 매끄럽지 않은 스크롤에 골머리를 앓았던 경험이 있었을 거라고 생각한다. ListView는 어떤 구조로 동작하고 매끄럽게 동작하기 위해 어떻게 성능을 최적화할 수 있을지에 대해 알아보겠다. ListView 의 작동원리 리스트뷰는 다른 일반 View들과 다르게 성능을 위해 설계된 View이다. 일반 View의 개념으로 설계된다면, 아이템의 데이터를 보여줄 때마다 inflate를 하게되는데 이는 성능 상에 큰 문제를 야기..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. [목차] 리스트뷰의 개념 및 사용법 리스트뷰의 성능 최적화 서론 안드로이드에서 가장 많이 사용하는 위젯 중 하나가 '리스트뷰'이다. 일반적으로 리스트 형태로 된 컨트롤을 말하는데 이 위젯은 특히 안드로이드나 아이폰처럼 손가락으로 터치하는 방식의 단말기에서 쉽고 직관적으로 여러개 아이템을 보여주고 선택하게 해주기 때문에 많이 사용된다. 안드로이드 앱을 개발하기 위해 필수적으로 알아야하는 리스트뷰를 구현하는 방법을 소개한다. 선택위젯 안드로이드에서 특별히 여러 개의 아이템을 선택할 수 있는 위젯들을 '선택 위젯'이라고 부른다. 다른 위젯과 다르게 특별히 이름을 붙이는 이유는 사용되는 방식이 기존 위젯과는 사뭇 다르기 때문이다. 선택 위젯은 어댑터(Ad..
에반황
'분류 전체보기' 카테고리의 글 목록 (12 Page)