마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onDestroy()가 호출된 후에 실행 될 수 있는 소스부에 대한 처리?

0 추천
onDestroy() 에서 null 처리를 해주는 것이 있는데요...

그중 하나가 Context 를 전역 변수에 담아 사용하던 것을 null 처리 해주는 것이 있는데

네트워크 요청 후 빠르게 엑티비티 종료시 onDestory가 먼저 호출 되고 네트워크 응답부가 호출된 후

View를 새로 그리면서 inflate를 하는 중 ctx 널포인트 에러가 납니다...

이럴경우 어떻게 처리 해줘야 할까요? View를 그리는 부분은 그 뒤로도 한참 있는데....

ctx null 여부를 일일이 검사할 수도 없고... 그냥 네트워크 응답 부분에만 ctx null 여부를 체크해야할지...

아니면 onDestroy에서 null 처리 하는 부분을 약간 딜레이를 주어 1~2초 뒤에 하게 해야할지... 모르겠네요
장승제 (760 포인트) 님이 2014년 5월 22일 질문

3개의 답변

+2 추천
해당 문제의 가장 정확한 답변은 네트워크 작업을 취소 하는 것이겠죠~~!

다른 분이 말씀 하신데로 간단하게 try해버리는 방법도 있지요~!

하지만 모든 네트워크 처리는 해당 처리가 필요 없을시 중지 시키는게 가장 정답이라고 봅니다~!

그리고 딜레이를 주는 방법은 좀.....

몇몇 후임들이 그렇게 일처리를 하는 경우가 있었는데.... 받아들이는 입장에서 어의가 없더라구요~~!

네트워크가 겁나게 느려 딜레이 보다 늦은 응답을 주었을 경우 같은 현상이 다시 발생 하죠~~!

그러면 그리 대답합니다~! 인터넷이 느려서 그런겁니다....

'그건 나도 안단다~~! 근데 충분히 잡을수 있는 작업을 꼭 이렇게 눈가리고 아웅식으로 작업 해야햇겠니??'

라는 생각이 들면서 책임가 ㅁ없어 보이더라구요~~! ㅋ
ThisPlus (46,920 포인트) 님이 2014년 5월 23일 답변
+1 추천
context를 전역변수로 저장하는 것 자체가 잘못된 겁니다.
그러지 마세요.

액티비티가 종료되면 네트워크 처리도 종료시키는게 올바른 방법입니다.
익명사용자 님이 2014년 5월 22일 답변
0 추천

context 쓰는 곳을 try catch로 Exception 처리 해주시면 됩니다.

마피 (2,970 포인트) 님이 2014년 5월 22일 답변
try{
    // context를 사용하는 알고리즘
}catch(Exception e){    }
...