본문 바로가기

프로그래밍/Android

특정 쓰레드에서 작업을 수행하고 싶을 때? 안드로이드 프로그래밍을 하다보면 UI 변경은 UI쓰레드에서 작업을 해야만 합니다. 그렇게 하지 않으면 Exception이 발생하게 되죠. 실제로 프로그래밍을 하다보면 서버와의 통신같이 IO가 오래 걸리는 작업은 새로운 쓰레드를 생성해서 작업을 하게 됩니다. 그런데 이 작업 도중에 UI를 변경해야하는 경우도 있죠. 그럴 때 UI를 변경하는 작업만은 UI쓰레드에서 동작하도록 해줘야하죠. 이렇게 UI쓰레드에서 특정 작업을 수행하려면 Activity의 runOnUiThread()메서드를 사용하면 되는데요. activity.runOnUiThread(new Runnable() { @Override public void run() { // work } }); 그런데 이런 메서드를 사용하면서 의문점이 하나 생겼죠. r.. 더보기
폰 화면 껐다 켰는데 onDestroy() 호출?? 안드로이드 개발을 하다가 보면 많은 어려움에 힘들어할 때가 있습니다.ㅎ 저도 그러한 많은 어려움을 겪어왔고, 오늘도 어려움에 부딪혔죠. 원래 폰 화면을 끄면 Activity는 당연히 onPause()와 onStop()이 호출되어야하는데, 이상하게 onDestroy()까지 호출되더군요..;; 한참을 찾아 헤매다가 알아낸 결과입니다. 메니페스트에서 폰 화면을 한쪽으로 지정해 둘 경우(어쩌면 가로 모드일때만의 문제일 수도 있습니다. 이 부분은 테스트해보지 않았습니다.), 화면이 꺼지면 onDestroy()가 호출되고 다시 onCreate()가 호출되어 액티비티가 새로 생성됩니다. 이렇게 가로 세로 이동 때 액티비티가 재생성되지 않도록 하려면 아래 한 줄을 메니페스트에 삽입해주면 됩니다. (물론 액티비티 속성으.. 더보기
안드로이드에서 back버튼 처리 안드로이드에서 back버튼에 대한 처리를 해줘야하는 경우가 있습니다. 일반적으로는 back버튼을 누르면 그 activity가 종료되게 되죠. 저는 activity에서 onBackPressed()메서드를 오버라이드해서 사용했었는데요, 이게 2.0버전부터 지원되는 메서드더군요-_-;;; 그래서 1.6이하의 버전에서는 에러가 나고 종료되더라구요. 1.6이하의 버전에서도 back버튼에 대한 처리를 원활히 해주기 위해서는 onBackPressed() 메서드를 오버라이드 하기 보다는, onKeyDown() 메서드를 오버라이드해서 쓰는 것이 좋습니다. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYC.. 더보기
안드로이드 앱의 설치 위치 지정해주기 안드로이드 버전 2.2 이상부터는 앱을 외부 저장장치에도 저장할 수 있게 됐습니다. http://developer.android.com/guide/appendix/install-location.html 위의 링크를 따라가 보시면, 인스톨 위치를 설정하는 방법에 대한 원문을 보실 수 있습니다. 저는 좀 간단하게 설명을 드리죠. 인스톨 위치를 설정하기 위해서는 manifest 파일을 수정하시면 됩니다. 위에서 보면 android:installLocation="preferExternal" 부분이 중요한 부분이죠. android:installLocation의 값을 무엇으로 주냐에 따라 인스톨 위치가 결정됩니다. 여기 예제에서는 preferExternal 였구요, 이는 외부 저장 장치(SD카드 등)에 기본적으로 .. 더보기
안드로이드 앱 등록시 필수 체크!! 안드로이드 마켓 필터링(Android Market Filtering) 안드로이드 마켓에서는 핸드폰의 특징에 맞게 검색할 때 앱을 필터링해서 보여줍니다. 그래서 분명 안드로이드 마켓에 앱을 올렸는데도,, 어떤 사람은 받을 수 있고, 어떤 사람은 받을 수 없는 거죠. 처음에는 이게 필터링 정책인지 모르고, 안드로이드 마켓의 버그인 줄 알았습니다.^^;;;; 그런데 검색을 해보니 안드로이드 마켓 필터링이란게 있더군요..ㅎ 그래서 제가 아무것도 모르고 고생했던 과거를 회상하며, 저처럼 고생하실 다른 분들을 위해 이 글을 씁니다. 일단 이 필터링이 힘들었던게,, 앱을 만들 때에는 절대 알 수 없습니다.;; 이 앱이 어떤 디바이스에서 필터링 될지,,;; 에러도 아니고, 워닝(warning)도 안뜨고 그냥 당연한 정책일 뿐이죠..ㅎ 그래서 모르고 넘어가기 쉽습니다. 그런데 이게 apk.. 더보기
포토샵 모바일(photoshop.com mobile)을 안드로이드 애플리케이션에 통합할 수 있다!!! 어도비가 써드-파티 개발자에게 photoshop.com mobile for android 1.1을 사용하여 개발자의 애플리케이션에 포토샵 모바일의 기능을 넣을 수 있도록 한다고 밝혔다. photoshop.com mobile을 릴리즈한지 4달만에 나온 뉴스이다 . 물론 예전보다 더 업그레이드 되었다. 어도비의 Digital Imaging Rich Media Solutions의 부사장이자 general manager인 Doug Mack가 다음과 같이 말했다. 아이폰과는 다르게 안드로이드 플랫폼에서는 photoshop.com 에디터를 개발자가 넓게 활용할 수 있도록 해주었다. photoshop.com mobile for android 1.1의 업데이트 버전에서는 Vibrant(boost photo colors.. 더보기
안드로이드 개발 환경 구축(updated) 안드로이드 application을 만들기 위한 개발 환경을 구축해보자. 먼저 최신 버전의 Eclipse를 다운로드 한다. 다운로드 링크 : http://www.eclipse.org/downloads/ Eclipse홈페이지에서 Downloads 페이지를 보면 여러 개의 Eclipse Packages를 볼 수 있다. 이 중에서 자바 개발자용 통합 팩인 Eclipse IDE for Java Developers를 다운받으면 된다. 위 그림에서 오른쪽 빨간 사각형 부분을 보면 OS 선택하는 부분이 있는데 만약 자신의 운영체제가 Windows라면 Windows를 클릭하면 된다. 다음으로 할 일은 안드로이드 SDK를 다운받는 것이다. 다운로드 링크 : http://developer.android.com/sdk/ind.. 더보기
안드로이드 타임라인 안드로이드 역사이다. 한번 둘러보는 것도 괜찮을 듯. 출처 : http://itviewpoint.com/153275 더보기
윈도우 모바일 VS 안드로이드 VS 아이폰 윈도우 모바일 (WM) 안드로이드 (Android) 아이폰 (iPhone) 개발 OS Windows Only Windows, MacOSX, Linux MacOSX Only (include Hackintosh) 개발툴 Visual Studio 2005, 2008 Eclipse 3.3, 3.4 Xcode 3.1, Interface Builder 프로그래밍 언어 Visual C++, C#, VB.NET Java Objective-C 프레임워크 or 런타임 MFC, .NET Compact Framework Android Application Framework, Dalvik Cocoa Touch 바이너리 .exe (CLR) .dex (Dalvik executable) .app 패키징 .cab .apk .zip 표.. 더보기