앱 종료시 AsyncTask 종료시키기

Posted by ITPangPang
2016. 8. 15. 17:52 안드로이드(android)/알아두면 좋은것


앱 종료시 

AsyncTask 종료시키기


어떤 작업을 background로 돌리기 위해서 

    AsyncTask를 사용할 때가 있다.


ㆍ 서버에서 주기적으로 접근해서 값을 요청하거나

    주기적이 아니더라도 일정 텀을 준후에 접근하기

    위해서 background를 걸어놓는다던가..


ㆍ 그런데 이 background 작업이 앱이 실행중일때만 

    유지되도록 하고 싶은데 AsyncTask를 사용하면 앱을

    종료하더라도 계속 돌아가게 된다.



Log를 찍어서 보면

알 수 있는데

back키를 눌러서


onDestroy를

태워서 앱을

종료시켜봐도


AsyncTask가

끝나지 않고

running 중이면

계속 멈추지 않고

돌아가게 된다.


이때 홈키를 눌러서

history까지 삭제해버리면

종료되긴 한다.


어쨋든..

앱을 종료하면

Async를 종료시키기 위해

onDestory에 한가지

처리를 추가시켜준다


만약

ItpangAsyncTask itpangAsyncTask = new ItpangAsyncTask();
itpangpangAsyncTask.execute();


이런식으로 실행시켰다고

가정하면


onDestroy에서

이렇게 처리해주면

된다.


try
{
if (itpangAsyncTask.getStatus() == AsyncTask.Status.RUNNING)
{
itpangAsyncTask.cancel(true);
}
else
{
}
}
catch (Exception e)
{
}


실행중인 AsyncTask의

상태를 얻어와서(getStatus())

그 상태가 RUNNING중이면

cancel 시켜버리겠다는

뜻이다.