본문 바로가기

Android

안드로이드(android) 핸들러(Handler) 예제2 안녕하세요 코코콩입니다. 지난번에 메시지를 핸들러로 보내 작업을 처리하는 부분을 포스팅했었는데요이번 포스팅에선 지난번에 한 메시지를 핸들러로 보내는 예제를 Runalbe객체를 보내 실행하는 방법으로 변경하는 것을 알아보겠습니다. class BackRunnable extends Thread{ public void run(){ while(true){ backValue++; Message msg = new Message(); msg.what = 0; msg.arg1 = backValue; mHandler.sendMessage(msg); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e... 더보기
안드로이드(android) 핸들러(Handler) 개념 & 예제 안녕하세요. 지난번 작성했던 쓰레드와 이어지는 핸들러에 관한 내용입니다. 백그라운드 쓰레드에서 연산작업만 가능하며 다른 쓰레드 소속(UI : 메인쓰레드)의 UI를 건드릴수 없다고 했는데요. 그 이유는 바로 동기화 문제가 발생하기 때문입니다. 예를들어 하나의 텍스트뷰를 두개의 쓰레드에서 수정한다면 아래와 같은 일이 발생할 것입니다. 쓰레드는 병렬적으로 실행되므로 위와 같은 일이 빈번하게 발생할 수 있습니다. 이러한 이유로 백그라운드 쓰레드에서 연산작업은 가능하지만, 메인쓰레드의 UI인 텍스트뷰에 값을 변경할 수 없습니다.그렇다면 백그라운드에서 연산된 값을 적용하려면 메인쓰레드에 알려 텍스트뷰를 갱신해야하는데 이떄 쓰레드간의 통신을 도와주는게 바로 핸들러(Handler)입니다. 핸들러는 항상 자신을 생성하는.. 더보기
안드로이드(android) 쓰레드(Thread) 개념 예제 안녕하세요코코콩입니다. 이번엔 쓰레드에 대해 공부하고, 예제를 통해 실습해보도록 하겠습니다. "쓰레드(Thread)란 무엇인가." : Thread는 프로그램에서 실행되는 흐름의 단위를 말한다. 일반적으로 하나의 Thread를 가지고 있지만, 환경에 따라 둘 이상의 Thread를 동시에 사용할 수 있다. 이를 멀티쓰레드(multi thread)라고 한다. 위 설명 그대로 하나의 실행단위인데요, 이를 이용해 음악을 들으며 인터넷서핑을 하는 등 동시에 여러 작업을 진행할 수 있습니다. 1. Thread의 선언 Thread() : 디폴트 생성자로 Thread객체를 생성한다. 생성된 객체는 독립적으로 실행되며 고유의 스택을 가진다.Thread(Runnable runnable) : Runnable 인터페이스 구현객.. 더보기
Android Manifest의 launchMode 오늘 아침 연락을 받았다.내가 개발한 광고 SDK에서 버그가 발견되었다는 것이다ㅠㅠ물론 버그없는 프로그램은 없지만......가슴이 아프다어떠한 버그인지 확인하니 다음과 같았다. 앱실행 -> 광고실행 -> 광고시청중 홈버튼으로 바탕화면 -> 바탕화면에서 멀티태스킹버튼으로 광고진입 -> 광고 이어서 재생 -> 시청 완료 -> 광고 종료 후 바탕화면(?) 참 어렵다.... 뭔놈의 상황인지... 우선 현상을 보니 Manifest의 문제로 예상. 가장 의심스러운 launchMode를 확인하니... singleInstance!! 이것 때문에 광고가 새로운 Task로 인식이 되어, 광고가 끝나니 다시 배경화면으로 이동된 것이다. 그래서 singleTask로 변경하니 앱과 광고가 하나의 Task로 인식이 되어 정상적로.. 더보기
서버와 로컬 파일 사이즈 비교하기 안드로이드 sdk 개발을 진행하며 겪은 문제 리뷰 앱 실행 시 영상을 다운로드 받는 Thread를 동작 시키고, 버튼을 누를 시 영상을 재생시키는 간단한 내용이었다. (물론 내부적으론 frequency와 재생 트래킹 등 많은 로직이 들어가 있으나... 겉으로 보여지는 부분은 매우 심플하다.)위 내용에서 이슈가 있었는데 원인은 영상이 100% 다운로드 받지 않은 상태(로컬 내에 파일은 있으나, 온전하지 않은 파일일 때)에서 재생할 때 발생함!! 따라서 영상을 재생 할 때 로컬 내 파일과 서버 내 파일의 사이즈를 비교해야했다. 문제는 안드로이드 몇버전인지는 모르나 Network작업은 Thread를 사용하도록 정책을 변경하였다. 따라서 로컬에 있는 파일사이즈는 바로 확인이 가능했으나, 서버에 있는 파일은 Th.. 더보기
블루스택, 윈드로이, 지니모션 구분하기 광고 sdk를 만들면서 블루스택 윈드로이 지니모션과 같은 에뮬레이터를 필터링해달라는 요청이 있습니다. 윈드로이와 지니모션같은 경우 Build.BRAND나 Build.MODEL, Build.PRODUCT 등과 같은 정보로 확인이 가능했습니다.TextView tv = (TextView) findViewById(R.id.textView1);String info = "";TelephonyManager telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);String networkinfo = telManager.getNetworkOperatorName(); info+="BOARD ="+Build.BOARD+"\n";info+="BRA.. 더보기
android XmlPullParser, 안드로이드 xml 파싱 업무상 안드로이드에서 xml파싱해서 작업해야하는일이 생김. 기존엔 json으로 파싱하던 부분을 xml로 변경하면 된다. 근데 xml파싱을 안해봐서 어렵다... 우선 구글에서 지원하는 XmlPullParser 체크... http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html 영어는 어려우니 소스로 확인해야겠다 public class XmlParserThread extends Thread { //안드로이드 특정 버전 이상에서는 Thread를 사용하지 않고서는 Web에서 데이터를 파싱하지 못한다.. StringBuilder sb = new StringBuilder(); String xmlURL= ""; int delay = 3000; .. 더보기