안녕하세요.
구현방법이 너무 많아 어떤걸 사용하는게 속도면이나 메모리사용이 가벼운지 궁금합니다.
방법 1 *********************************************************
Handler mHandler = new Handler();
ProgressDialog mProgress;
mProgress = new ProgressDialog(this);
mProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgress.setMessage("로딩중 입니다");
mProgress.show();
Thread t = new Thread() {
public void run() {
------------------------------------------------ 실행
mHandler.post(new Runnable() {
public void run() {
------------------------------------------------ 실행
mProgress.dismiss();
}
});
}
};
t.start();
방법 2 **************************************************************
class AccumThread extends Thread{ // 이너클래스
Handler mAfter;
public AccumThread(Handler after) {
this.mAfter = after;
}
public void run(){
------------------------------------------ 실행
mAfter.sendEmptyMessage(0);
}
Handler mAfterAccum = new Handler(){
public void handleMessage(Message msg){
mProgress.dismiss();
}
};
방법 3 ******************************************************************
Handler mHandler = new Handler();
ProgressDialog mProgress;
mProgress = new ProgressDialog(this);
mProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgress.setMessage("로딩중 입니다");
mProgress.show();
Thread t = new Thread() {
public void run() {
------------------------------------------------ 실행
mAfter.sendEmptyMessage(0);
}
};
t.start();
Handler mAfterAccum = new Handler(){
public void handleMessage(Message msg){
mProgress.dismiss();
}
};
구현방법이 개발자 스타일에 따라 더 다양할것 같은데요.............
책을 볼때마다, 책마다 다른방식, 학원강사의 방식 등등 다들 조금식 다르게 개발하는것 같아서요..................
궁금한건 다른 개발자분들은 어떤 스타일로 개발을 하는지 여러방법중 어느방법이 좋은건지 조언부탁 드리겠습니다.
감사합니다.
전 단순히 UI스레드의 뷰상태 작업을 할때는 핸들러도 선언 안하고...
runOnUiThread(Runnable action);
로 그냥 이름없는 객체 만들어서 넘겨버립니다...
근데 답은 없는거 같네요... 한번 쓰는 스레드라면 그냥 이름없는 객체로 스레드 생성해서 하는게 편한거지만, 여러개 스레드가 필요할때는 당연히 확장 클래스 만들어야하고...
핸들러도 단순히 뷰 요소에 접근하는 거라면 runOnUiThread(Runnable action);쓰고 핸들러 없는게 편하지만
비동기 멀티 스레드에서 루퍼가 하나씩 꺼내가는대로 실행순서를 지켜야 한다면 전역 핸들러를 써야하는거고...
무슨 프로그램이냐에 따라 다 틀릴듯 하네요...
전 2번 방법으로 쓸것같아요.
쓰레드를 2개이상 생성한다고 하면
2번방법은 1개의 스레드 클래스에 2개의 객체만 있으면 되는데..
1,3번은 쓰레드 2개이상 생성하려면
관련 코드들도 똑같이 2 set로 있어야하니까요...
정답은 없는것같습니다..