안드로이드 코딩하다보면 1초후에 동작 같은 기능이 필요할때가 있다.
이럴경우 handle을 사용하면 된다.
단순히 1초후에 실행하고, 실행이 끝난후 확인하는 기능
new Handler().postDelayed(new Runnable() {// 1 초 후에 실행
@Override
public void run() {
// 실행할 동작 코딩
mHandler.sendEmptyMessage(0); // 실행이 끝난후 알림
}
}, 1000);
Handler mHandler = new Handler() {
public void handleMessage(Message msg) { // 실행이 끝난후 확인 가능
}
};
3초후에 실행
private Handler mHandler = new Handler();
mHandler.postDelayed(mMyTask, 3000); // 3초후에 실행
private Runnable mMyTask = new Runnable() {
@Override
public void run() {
// 실제 동작
}
};
0.5초 후에 실행하고 실행시 메시지를 전달하며, 실행후 받은 메시지에 따라 처리하는 기능
new Handler().postDelayed(new Runnable() {// 0.5 초 후에 실행
@Override
public void run() {
// 실행할 동작 코딩
Message msg1 = mHandler.obtainMessage(); //사용할 핸들러를 이용해서 보낼 메시지 객체 생성
Bundle b1 = new Bundle(); //메시지를 담을 번들 생성
b1.putBoolean("END_AUTH", true); //번들에 메시지 추가
msg1.setData(b1); //메세지에 번들을 넣는다.
mHandler.sendMessage(msg1); //메세지를 핸들러로 넘긴다.
}
}, 500);
Handler mHandler = new Handler() {
public void handleMessage(Message msg) { // 실행이 끝난후 확인 가능
Bundle bd = msg.getData();
if(bd.getBoolean("END_AUTH")){
// 메시지를 받고 처리할 부분
}
}
};
참고1.. Thread를 이용한 바로 처리하는 방법
new Thread(new Runnable() {
@Override
public void run() {
// 로직처리
handler.sendEmptyMessage(0);
}
}).start();
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// UI처리
}
};
참고2.. Timer를 이용한 처리방법
new Timer().schedule(new TimerTask() {
public void run() {
// UI 및 로직
}
}, 1000); // 1초후 실행
참고3. Async Task를 이용한 바로 처리 방법
new AsyncTask() {
@Override
protected void onPreExecute() {
// UI 처리
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... params) {
// 로직 처리
return true;
}
@Override
protected void onProgressUpdate(Integer... progress) {
// UI 처리
}
@Override
protected void onPostExecute(Boolean result) {
// UI 처리
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}.execute();
출처: http://androi.tistory.com/57 [안드로이 스토리]