프로그래밍/안드로이드 156

안드로이드 핸들러로 UI처리하고 쓰레드에서 실작업 처리하기

이번에는 쓰레드와 핸들러 동시에 이용해서 구현해봅시다. 쓰레드에서 실제 작업만 처리하고 UI 관련 작업은 핸들러에게 메시지를 보내서 다 처리합니다. main.xml MainActivity.java 파일 package com.example.longtime4; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.view.Menu; import android.vi..

안드로이드 작업스케쥴링 sendMessageDelayed를 언제 쓰지

boolean sendMessageAtTime(Message msg, long uptimeMillis) // 이 메소드는 부팅후 경과시간을 사용하여 지정할 수 있습니다 boolean sendMessageDelayed(Message msg, long delayMillis) //지금 시간으로 경과한 시간으로 지정한다 단위는 둘다 밀리초 러너블도 다음메소드를 이용해서 지연시간을 둘 수 있습니다 boolean postAtTime(Runnable r, long uptimeMillis) boolean postDelayed(Runnable r, long delayMillis) 일단 이런것을 왜 쓰는 건지 이해하기위해서 다음 예제를 실행해봅시다. 일단은 delayed메시지를 안썼을때입니다. main.xml

안드로이드 루퍼(looper)!? 쓰레드와 관포지교 관계

루퍼(looper) 지금까지 쓰레드끼리 Message객체를 만들어서 정보를 주고 받는다고 생각하면 잘못된 것입니다. 예제들을 보면 메인쓰레드만 Message객체를 받고 있음을 알 수 있습니다. 즉 메인쓰레드는 루퍼란 것을 가지고 있기때문에 메시지를 받을 수 있었습니다. 루퍼란놈은 메시지큐에서 메시지를 꺼내서 핸들러에 보내는 역할을 합니다(이전 소스보면 메인쓰레드 안에 Handler mHanler = new Handler()를 했음을 알 수 있습니다. 그렇다면 서브쓰레드에도 메시지를 받을 수 있게 할려면? 서브쓰레드에도 루퍼를 만들어주면 됩니다. static void prepare() : 현재 쓰레드를 위한 루퍼를 준비합니다 static void loop() 큐에서 메시지를 꺼내 핸들러로 전달하는 루프를 ..

안드로이드 쓰레드 4번째 메시지 풀을 이용하는 방법(obtain 메소드)

쓰레드 4번째 메시지 풀을 이용하는 방법 Message객체를 계속 만들면 메모리도 많이 소모하고 속도도 느려집니다. 그래서 안드로이드는 메시지풀이라는 것을 두었습니다. static Message obtain([Message orig]) 메시지풀에서 비슷한 메시지를 꺼내 사용하는것(일종의 new로 인스턴스 만드는 것랑 비슷함) static Message obtain(Handler h, int what, int arg1, int arg2. Object obj) void recycle() 사용한 메시지를 풀에 다시 집어 넣음 main.xml

반응형