검색을 해도 너무 답이 안나와서 이렇게 질문 올립니다. 고수님들 부탁드리겠습니다 ( __ )
먼저 마켓을 통한 업그레이드 방법 말고 개인 서버를 통한 업그레이드 방식을 가지고 있습니다.
상황 설명 드리겠습니다..
1. 프로그램 로그인시 버전 업데이트 감지.
2. 프로그램 종료 후 (실행 중인 프로그램 목록에서 완전 제거 되었음(서비스 사용 안함)) apk 다운로드
3. apk 다운로드 후 apk 실행하여 버전업된 프로그램 설치
4. 버전업된 프로그램 로그인후 아무 프로그램상 아무 화면에서나 하드웨어 홈 버튼 누름
5. 프로그램 아이콘 다시 클릭
6. 로그인 화면 뜸...(백버튼 누를시 하드웨어 홈버튼 눌렀을때 있던 화면으로 돌아감)
저 6번 상황이 문제이구요
기기 재부팅 하면 정상적으로 홈버튼 누를때의 화면이 잘 뜹니다
꼭 업그레이드를 하고(동일 버전 재설치도 마찬가지)
실행 하여 홈버튼을 누르고 다시 실행 시키면 AndroidManifest.xml 에 지정한 MAIN Activity 가 다시 뜨는데요...
(기존 프로그램이 죽은건 아니고 Activity Stack상 TOP에 MAIN Activity 가 뜹니다...)
프로세스상 중복 실행이 된것은 아닌것 같고 OS상에 실행되고 있는 프로그램을 인지하지 못해서 MAIN Activity를 띄워
주는것 같은데......혹시 해결 방법이 있을까요?
답변 정말 감사합니다
Mentra/ 업데이트 감지시 종료 되는건 확인 하였습니다 singleTask 값은 설정되어있습니다.
miyoo/ 3명이서 한 1주일째 소스 다 뒤져서 보고 있는데 인텐트 옵션은 잘못준게 없어요...
아참 그리고 액티비티가 종료가 아니라 백그라운드로 프로그램을 내린 액션을 취한 것입니다.
그럼 다시 어플 실행시 백그라운드에 있는 액티비티가 떠야 하는데 Manifest에서 MAIN 으로 잡은 액티비티가 스택상 제일 위로
실행 되는 상황입니다.
물론 소스 상 어떠한 부분에서도 MAIN (로고 화면입니다) 액티비티를 뜨게 하는 부분은 없습니다.
오직 Manifest 에서만 MAIN 이라고 설정되어있죠
며칠 끙끙거리다 해결했네요...
매우 오래전에 등록된 글이어서 이미 해결한 분도 계시겠지만 혹시나 아직 해결하지 못한 분을 위해서 댓글을 남깁니다.
제가 확인하기로는 안드로이드 버그인것 같은데, 우회할 수 있는 방법은 아래와 같습니다.
ActivityManager manager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
List<RunningTaskInfo> tasks = manager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo taskInfo : tasks) {
if(taskInfo.baseActivity.getClassName().equals(<your package name>.<your class name>) && (taskInfo.numActivities > 1)){
finish();
}
}아래 링크를 참조하시면 더 자세한 사항을 알 수 있습니다.




액티비티들이 어떤구조로 있는지는 모르겟으나 액티비티가 종료되지않고 또한번 생성되는 상황인것 같네요.
한번,AndroidManifest파일의 메인액티비티에 android:launchMode="singleTask" 를 추가해보세요