안드로이드 개발 질문/답변
(글 수 45,052)
플레이어 화면 구동중, 프로그래스바 처리를 위해 AsyncTaks처리를 하여,
플레이어 화면을 구동중일때, Back key를 눌러서 강제종료 할경우,
아래와 같이 dispatchKeyEvent에서 현재 구동중인 AsycTask가 Running중이면, progresstimer_Asynctask.cancel(true);
를 입력하여 강제 종료 되도록 처리 하였으나, AsyncTask가 죽지 않고 계속 살아 있습니다(Task에서는 while문이 돌고 있습니다.)
구글링해보면 cancel(true); 로 주면 강제 종료가 가능하다고 하였는데, 왜 onCancelled()로 이벤트가 넘어오지 않는지
모르겠습니다.
고수님들 도와주세요... ㅠㅠ
public boolean dispatchKeyEvent(KeyEvent event)
{
boolean ret= false;
int getvol=0;
RenderCommonUtil.RenderLog(TAG, "dispatchKeyEvent");
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
switch(event.getKeyCode())
{
case KeyEvent.KEYCODE_BACK:
{
if(progresstimer_Asynctask.getStatus() == AsyncTask.Status.RUNNING){
RenderCommonUtil.RenderLog(TAG, " progresstimer_Asynctask.Status.RUNNING !! ");
progresstimer_Asynctask.cancel(true);
}
finish();
break;
}
default:
{
ret = super.dispatchKeyEvent(event);
break;
}
}
}
return ret;
}
플레이어 화면을 구동중일때, Back key를 눌러서 강제종료 할경우,
아래와 같이 dispatchKeyEvent에서 현재 구동중인 AsycTask가 Running중이면, progresstimer_Asynctask.cancel(true);
를 입력하여 강제 종료 되도록 처리 하였으나, AsyncTask가 죽지 않고 계속 살아 있습니다(Task에서는 while문이 돌고 있습니다.)
구글링해보면 cancel(true); 로 주면 강제 종료가 가능하다고 하였는데, 왜 onCancelled()로 이벤트가 넘어오지 않는지
모르겠습니다.
고수님들 도와주세요... ㅠㅠ
public boolean dispatchKeyEvent(KeyEvent event)
{
boolean ret= false;
int getvol=0;
RenderCommonUtil.RenderLog(TAG, "dispatchKeyEvent");
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
switch(event.getKeyCode())
{
case KeyEvent.KEYCODE_BACK:
{
if(progresstimer_Asynctask.getStatus() == AsyncTask.Status.RUNNING){
RenderCommonUtil.RenderLog(TAG, " progresstimer_Asynctask.Status.RUNNING !! ");
progresstimer_Asynctask.cancel(true);
}
finish();
break;
}
default:
{
ret = super.dispatchKeyEvent(event);
break;
}
}
}
return ret;
}
그럴땐 back 키 사건시 flag하나 설정하구 while문에서 빠져나오도록 하면 되더라구요.