2010-04-22 2 views
8

onResume() 메서드에서 사운드 재생을 시작하고 게임 플레이를 다시 시작하는 앱이 있지만, 휴대 전화를 대기 상태 (화면 꺼짐)로 두었을 때 내 앱이 마지막 실행 애플리케이션 인 경우, 그리고 나서 메뉴 버튼을 눌러 시간을 확인한 다음 휴대 전화가 게임을 시작하고 백그라운드에서 소리를냅니다 (앱이 실제로 표시되지 않고 날짜/시간이있는 화면 만 있음, 아직 onResume이 (가) 호출되었을 것임). 내 애플 리케이션). 내가 여기서 뭘해야하지? 앱을 다시 활성화하는 방법을 식별하고 앱이 실제로 표시 될 때만 게임을 시작하는 조건문을 추가하는 방법이 있습니까?Android - onPause/onResume 메서드를 제대로 처리하는 방법?

@Override 
    protected void onResume() 
    { 
     mySaveGame = Utilities.loadSavegame(this); 

     //check the savegame 
     if(mySaveGame!=null) 
     { 
      //start game using savegame values 
      this.startFromSavedGame(mySaveGame.getIsLevelComplete()); 
     } 
     else 
     { 
      //run the 1st-run components 
      this.startFirstRun(); 
     } 

     super.onResume(); 
    } 

내가 화면이 켜져됩니다 때마다 게임을 시작하지 못하도록하고 생각할 수있는 유일한 것은 (앱에서 볼 수없는 경우에도)입니다 : 여기

내 onResume에서 미리보기입니다 this.finish()를 onPause() ...의 마지막 줄에 넣으려고합니다.하지만 그 행마 자체가 종료 되었기 때문에 돌아갈 때마다 응용 프로그램을 다시 시작해야합니다 (onPause가 영구 저장하기 때문에 괜찮습니다). 데이터,하지만 그것은 우아한 솔루션이 아닙니다).

도와주세요.

답변

8

onResume()onPause() 대신 onStart()onStop()으로 전환하는 것을 고려 했습니까?

+0

감사를 회신합니다. 나는 onStart()/onStop()을 시도했지만 동일한 결과를 얻었습니다 ... 실제로 보이지 않더라도 게임은 백그라운드에서 재생됩니다. 설명서에 따르면 onStart()는 onResume()보다 먼저 호출되므로 (내 이유는 작동하지 않습니다) onStop()은 호출되지 않을 수도 있습니다 ... " – RyanM

+0

흠 ... 잠금 장치처럼 들립니다. 화면이 포 그라운드가있는 것으로 제대로 간주되지 않습니다. 어떤 장치에서 이것을 테스트하고 있습니까? – CommonsWare

+0

T-Mobile G1 (Android 1.6 스톡 펌웨어)을 사용하고 있습니다. – RyanM

4

onResume()/onPause()에서 내 음악 플레이어를 다시 시작하거나 일시 중지 한 것과 동일한 문제가 있었으며 가장 좋은 해결책은 내 전광판에서 내게는 public void onWindowFocusChanged (boolean hasFocus) 콜백을 사용할 수있을 때 일시 중지했다가 다시 시작하는 것입니다.

편집 :이 옛날과 약간 오답에 - 올바른 응답은 안드로이드 개발자 블로그에 설명되어 있습니다 : making android games that play nice

+1

볼륨을 변경할 때 hasFocus == false로 일부 장치에서 onWidowFocusChanged가 호출된다는 사실을 알고 계셨습니까? – Gallal

+0

내 게시물이 있기 때문에 Google은 모든 기기/펌웨어에서 해당 문제를 올바르게 처리 할 수있는 더 나은 대안을 제공했으며 위의 원래 게시물을 편집했습니다. – MichalisB

관련 문제