현재 어플에서 back 키를 눌러 종료되도록 구현하고 있습니다.

 

   moveTaskToBack(true);                                 1번
   finish();                                                            2번
   android.os.Process.killProcess(android.os.Process.myPid());  3번

 

3가지를 다 사용한 이유는 완전한 프로세스 종료를 원했기 때문입니다.

 

성능이 좋은 폰일경우는 아주 아주 안보이는 문제지만, 에뮬상에서는 자주 보이는 ANR 에러가 뜨는데

 

잠재적인 오류를 가진 내용이기 때문에 한번 테스트를 해봤습니다.

 

처음에는  Thread에 대한 문제로 생각하고 접근했지만, Thread 종료에 대한 문제는 아니었습니다.

 

 Thrad.setDaemon(true)로 하더라도 문제가 있다는 글을 읽었습니다만, 다행히도 이부분 문제는 아닌듯 합니다.

 

다만 위 3가지의 조합문제일 것이다라는  가정하에 조합을 해보았습니다.

 

[결과]

1) 2번 + 3번 =  정상

 

2) 2번 = 정상

 

3) 3번 = 정상

 

4) 1번 + 3번 오류

 

5)  1번 +2번 +3번 = 오류

 

6)  1번 + 2 번 = 정상

 

public boolean moveTaskToBack (boolean nonRoot)

Since: API Level 1

Move the task containing this activity to the back of the activity stack. The activity's order within the task is unchanged.

Parameters
nonRoot If false then this only works if the activity is the root of a task; if true it will work for any activity in a task.
Returns
  • If the task was moved (or it was already at the back) true is returned, else false.

 

[결론 추측]

 

사용자들은 세부적 사항을 모르기 때문에 작업관리자등으로 프로세스 목록이 떠 있으면(finsi()로 종료시)

프로그램이 종료되지 않은것으로 오해합니다.  따라서, 위방법을 부득이하게 사용한다면 moveTaskToBack 를

주의해서 사용해야 할 것 같습니다.

 

다만 moveTaskToBack 없이 프로세스를 종료하게 되면 애니메이션 효과가 없어서

 

비정상 종료되는 듯한 느낌을 주게되는데 이에 대한 고민은 해봐야할 것 같습니다.