본문 바로가기

안드로이드116

[안드로이드] InputStream을 닫는데 왜 오래 걸릴까? 개발 버전 : 안드로이드 프로요(버전 2.2) 안드로이드 프로젝트를 진행하다가 HTTP로 파일을 다운로드하는 기능을 구현해야 하는 일이 있었습니다. 파일 다운로드를 할 때는 당연히 사용자에게 현재 다운로드 상황을 보여줘야 합니다. 그래서 HTTP 해더에서 Content-Length 값을 가져와서 사용해야 합니다. 그리고 해당 클래스는 Download를 수행하는 클래스이기 때문에 다운로드 할 주소와 다운로드 될 경로를 모두 맴버변수로 갖고 있습니다. 또한 메소드 단위를 최소화 하기 위해 다운로드 할 파일의 주소에 대한 스트림을 얻어오는 메소드와 다운로드 할 파일의 크기를 얻어오는 메소드로 나누었습니다. 하지만 이 두 부분을 나누면서 속도 문제가 발생했습니다. 제가 실험한 코드 수정 과정을 쭉 적어보겠습니다.. 2013. 4. 19.
[안드로이드] Dialog.dismiss()를 할 때, java.lang.IllegalArgumentException: View not attached to window manager 예외 회피하기 안드로이드에서 Dialog를 사용할 때는 dissmiss() 메소드 호출을 안 할 수가 없습니다. 그런데 종종 이 dismiss() 메소드 호출을 하다보면 'java.lang.IllegalArgumentException: View not attached to window manager' 라는 예외가 발생 할 때가 있습니다. 저는 이 예외가 발생하는 상황을 찾기 위해서 몇 가지 상황에 대해서 테스트를 했습니다. 그리고 이 예외가 발생하는 한 가지 상황을 찾았습니다. Dialog가 보여지고 있는 상태에서 Activity.finish()를 한 뒤, Dialog.dismiss()를 호출하면 'java.lang.IllegalArgumentException: View not attached to window man.. 2013. 3. 8.
[안드로이드] Collection을 사용 할 때 ConcurrentModificationException을 피하는 방법 링크 : http://www.javacodegeeks.com/2011/05/avoid-concurrentmodificationexception.html 자바 Collection 클래스는 다른 thread에서 iterator를 사용하여 루프를 돌고 있을 때, Collection이 변경되어지면, 이 때 iterator.next()를 호출하는 순간에 ConcurrentModificationException 예외를 발생합니다. 이 예외는 multi-thread 뿐만 아니라 단일 single-thread에서도 발생 할 수 있습니다. multi-thread 환경에서 ConcurrentModificationException 회피하기 1. List를 새로운 List객체에 복사해라. 이 방법은 List의 개수가 적거나 .. 2013. 3. 6.
[안드로이드] APK 파일 SIGN 하기 링크 : http://stackoverflow.com/questions/7119839/re-sign-an-android-apk Resign Android Apk using android default debug.keystore.**Open the apk in the winzip browser and not by unzipping to a folder.Delete META-INF folder .zipping again is not required.**Jarsigner -verbose -keystore debug.keystore yourapk.apk aliasnamedhna-ubuntu]$ -jarsigner –verbose –keystore debug.keystore androiddebugkeyjarsig.. 2012. 10. 29.
안드로이드 ListView와 Thread를 사용할 때 동기화 오류 (IllegalStateException) 버그안드로이드 App을 개발하면, ListView나 Gallery 등의 위젯들을 사용하게 됩니다. 그리고 속도 향상을 위해서 Thread나 AsyncTask와 같은 별도의 Thread를 만들어서 처리를 합니다. 운이 좋으면 발견 되지 않겠지만(과연 좋은 걸까라는 생각이 들지만..) , 타이밍이 맞아서 App이 죽는 경우가 발생하기도 합니다. 이렇게 App이 죽는 이유는 동기화 입니다. 아래 Log를 발견했다면, 아마 이 이유라고 생각됩니다. E/AndroidRuntime(19101): FATAL EXCEPTION: mainE/AndroidRuntime(19101): java.lang.IllegalStateException: The content of the adapter has changed but Li.. 2012. 10. 8.
[안드로이드] uncaught exception 사용하기 (UncaughtExceptionHandler) [reference site] Know the JVM Series – 1 – The Uncaught Exception HandlerKnow the JVM Series – 2 – Shutdown HooksAndroid: out of memory exception in GalleryHow to catch OutOfMemory error in JVM level? question : how to catch Error globally on android? 배경 안드로이드 앱을 개발하고, 앱을 배포를 합니다. 하지만 고려하지 않던 Exception이 발생하면 앱은 죽게됩니다. 왜 죽었는지 오류를 수집하지 않는다면, 앱의 인지도는 떨어지기 마련입니다. 그렇다면 고려하지 않던 Exception이 발생하면 어떻게 해야할.. 2012. 10. 2.