안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요?
다음 중 어느 것이 배터리 소모(혹은 리소스 소모)가 적다고 볼수 있습니까?
1) Main에서, 즉 onCreate()에서 Handler를 생성하여 이 Handler에서 일정한 시간 간격을 두고 특정 작업을 반복수행하는 경우와(시간 간격은 5초 간격으로 잡을 경우)
public void onCreate(Bundle savedInstanceState) {
//앞 부분 생략
mHandler.sendEmptyMessage(30);
}
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
//여기서 특정 기능 수행
mHandler.sendEmptyMessageDelayed(30, 5000);
}
};
2) Main에서, 즉 onCreate()에서 작업 Thread(custom 쓰레드)를 생성하여 이 Thread에서 while 문을 통해서 일정한 시간 간격을 두고 특정 작업을 반복 수행하는 경우(시간 간격은 5초 간격으로 잡을 경우),
public void onCreate(Bundle savedInstanceState) {
//앞 부분 생략
MyThread th = new MyThread();
th.start();
}
class MyThread extends Thread {
public void run(){
while(true){
//여기서 특정 기능 수행
try {
Thread.sleep(5000);
}catch (InterruptedException e){}
}//while
}
}
위 둘 중 어느 것이 배터리, 혹은 리소스 소모가 적다고 볼수 있습니까?
감사합니다^^

가끔은 뒤도 돌아보자... 이 만큼 왔구나...!
2012.09.15 07:05:41

일단은 Thread에 비해서 Handler는 멈추기가 상대적으로 쉬운것 같습니다. 그런 점에서는 핸들러가 좋은 것 같습니다.
그런데 배터리 소모 정도는 어떤지 잘 모르겠습니다. 어제 밤에 밤샛는데 굵직한 기능 한 건 처리하고 나니까 잠이 안 오네요ㅋㅋ
appler님도 상당히 이른 시간에 댓글 달아주셨네요 ㅋㅋ 댓글 감사합니다^^
2012.09.15 09:53:02
(추천:
1 / 0)
볼것도 없이 1번
어차피 핸들러는 os 단에서 별도로 루프를 돌려줍니다.
굳이 별도로 쓰레드를 돌리는건 당연히 더 문제가 되겠죠
어차피 핸들러는 os 단에서 별도로 루프를 돌려줍니다.
굳이 별도로 쓰레드를 돌리는건 당연히 더 문제가 되겠죠
2012.09.15 12:34:22

네^^, NoBrain님, 건방진프로그래머님 답변 감사합니다.
돌려봐야하기는 하겠지만.... 에효~~~ 누가 돌려본 분 없을까요?
NoBrain님의 답변 접수하갓습니다.^_^ㅋㅋ
근데, 이미 코드도 모두 있으니 완충 상태에서 프로그램 실행하고 서너시간씩 놔둬보시죠. 바로 알 수 있을 듯 합니다. (사실 저도 결과가 궁금하군요!)