2011-04-13 3 views
0

내 Android App이 약간 무거워 져서 느리게 실행됩니다. 나는 아직 낙관 할 라운드가 없습니다. 나는 아직도 몇몇 벌레들을 다림질하고있다. 그냥 배경 지식 : 내 앱은 게임이기 때문에 사용자는 당연히이기거나 잃을 수 있습니다. 나는 앱이 갑자기 종료 어디에 "순서를 승리"또는 "잃을 순서는 아직"그래서 난 그냥이 after.finish() 이후 Android App을 다시 열 수 없습니다.

if(userWins()) 
    this.finish(); 

에 코드를 넣어 만든 havent 한. 지금까지는 잘못된 것이 없습니다. 그러나 앱을 다시 열려고 시도 할 때 옵션 버튼을 눌러야하는 빈 화면이 나타납니다. 내 휴대 전화를 끄고 다시 켜면 앱을 사용할 수 있지만 그렇지 않으면 사용할 수 없습니다. 나는 이것이 왜 있는지 전혀 모른다.

사이드 노트 : AngryBirds의 사본에도 비슷한 문제가 있습니다. 게임 화면을 '부적절하게'종료하면 (예 : 게임 중간에 옵션 메뉴가 표시되지 않음) 휴대 전화를 재부팅 할 때까지 앱을 다시 켤 수 없습니다.

답변

0

finish()으로 전화를 걸면 아직 프로세스가 중지되지 않습니다. 응용 프로그램을 다시 시작하는 경우 OS에 ressources가 필요하지 않으면 프로세스가 계속 실행됩니다. 참조 : http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

재부팅 할 때 작동하는 이유입니다. (재부팅 할 필요가 없으며 루트가 아닌 경우 adb shell kill <PID> 또는 작업 킬러를 사용하여 프로세스를 종료하면됩니다.)

응용 프로그램에 이전 값으로 초기화 된 일부 변수가 남아있을 가능성이 높습니다. 변수가 이전 데이터 및 새로 초기화 된 데이터에 대한 다른 변수를 가리키는 불안정한 상태입니다.

onDestroy() 이벤트에서 이전 데이터를 null로 설정하거나 onCreate() 이벤트에서 초기화를 수행해야합니다. 데이터를 재사용 할 수 있는지 여부에 따라 선택합니다.

싱글 찾거나 초기화 구조의 종류 : 일부 정적 값이 게임의 끝에서 삭제되지 않는 것처럼

if (mVar == null) { 
mVar = "stuff"; 
} 
+0

: 감사합니다. 내 시간을 절약했습니다. – Surej

0

는 소리.

관련 문제