본문 바로가기

Android

[8일차] Handler Timeout 활용

이제 ~ 뭐해볼거냐면


핸들러에 재밌는 함수들이 있다. 



얼마 후에 실행해 이런것들...



그래서 그러한 처리들을 할 수가 있다. 


핸들러는 반복적으로 처리하는 경우라든지, 일정시간 후에 시작하는 작업을 이렇게 처리할 수 있다. 



TimeOut 처리 핸들러 쓰기


onbackpressed해서 토스트를 띄운다. 


근데 2초후 토스트가 사라진뒤 눌러도 종료되므로 

핸들러를 만들어서 2초 후에 불리언 변수를  초기화 시켜 줘야 한다. 




public class TimeoutActivity extends AppCompatActivity {

public static final int MESSAGE_BACK_KEY_TIMEOUT = 1;
public static final int TIMEOUT_TIME = 2000;
//back키를 누르는 핸들러 이벤트 처리
Handler mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MESSAGE_BACK_KEY_TIMEOUT :// 값이 1이면 true
isBackPressed = false;
break;
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timeout);
}

boolean isBackPressed = false;

@Override
public void onBackPressed() {
// super.onBackPressed();
if (!isBackPressed) {
Toast.makeText(this, "one more back press", Toast.LENGTH_SHORT).show();
isBackPressed = true;
mHandler.sendEmptyMessageDelayed(MESSAGE_BACK_KEY_TIMEOUT, TIMEOUT_TIME);


//여기서 핸들러로 처리 안해주면

백키를 누르고 토스트가 없어진 뒤 눌러도 종료되므로 토스트메세지의 지속시간인 2초 후 isBack값을 초기화 시켜주려고
핸들러를 쓰는거다.


} else {
mHandler.removeMessages(MESSAGE_BACK_KEY_TIMEOUT);

// 아닐경우 핸들러 메세지를 지워 줘야 하므로, 지금 여기서 없애 주는 것이다.

finish();
}
}
}


'Android' 카테고리의 다른 글

[8일차] 애니메이션  (0) 2016.07.22
[8일차] 핸들러카운트다운 실습  (0) 2016.07.22
[8일차] AsncTask  (0) 2016.07.22
[8일차]핸들러 다루기  (0) 2016.07.22
[8일차] 안드로이드 쓰레드 동작방식  (0) 2016.07.22