2010-04-22 9 views
8

Ses çalmaya başlayan ve onResume() yönteminde oyun oynamaya başlayan/devam ettiren bir uygulama var, ancak dikkatimi çeken şey, telefonu bekleme moduna aldığımda son uygulama olduysa (ekran kapalı), ve ben sadece zamanı kontrol etmek için Menü düğmesine basın, sonra telefon oyun oynamaya başlar ve arka planda sesler (uygulama aslında görünmüyor, sadece tarih/saat olan ekran, henüz OnResume çağrılmalıydı) benim uygulamam). Burada ne yapmalıyım? Uygulamanın yeniden etkinleştirilmesini ayırt etmenin bir yolu var ve ardından uygulama yalnızca gerçekte görünür olduğunda oyunu başlatan bir koşullu ifade ekliyor mu?Android - onPause/onResume yöntemlerini düzgün bir şekilde nasıl kullanırız?

@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(); 
    } 

ben ekran açık olur her başlamasını oyunu engellemek için yaptığını düşünebilirsiniz tek şey (app görünür olmasa bile) 'dir: İşte

benim onResume gelen snippet'idir this.finish() öğesini onPause() 'daki son satır olarak koymak için ... ama bu, uygulamanızın yeniden başlatılmasını istediğiniz her seferinde uygulamayı yeniden başlatmaya zorlar. veri, ama bu zarif bir çözüm değil).

Lütfen

Yardım edin.

cevap

8

onResume() ve onPause() yerine onStart() ve onStop()'a geçiş yapmayı düşündünüz mü?

Ben de aynı sorunu vardı
+0

Teşekkür yanıtlarken için. OnStart()/onStop() 'ı denedim ama aynı sonuçları elde ettim ... Oyun aslında görünmese bile arka planda çalıyor. Belgelere göre, onStart() onResume() önce çağrılır (bu yüzden benim durumumda işe yaramaz) ve onStop() "asla çağrılabilir ..." – RyanM

+0

Hmmmm ... Bu kilit gibi geliyor ekranın ön plana sahip olduğu düşünülüyor. Bunu hangi cihazda test ediyorsunuz? – CommonsWare

+0

Bir T-Mobile G1 (Android 1.6 hisse senedi yazılım) kullanıyorum. – RyanM

4

(I onResume()/onPause() benim müzik çalar özgeçmiş/duraklama vardı) ve ben buldum iyi çözüm duraklatmak ve bunu public void onWindowFocusChanged (boolean hasFocus) geri arama ile alabilirsiniz ön plana açıkken benim aktiviteye devam etmektir.

Düzenleme: Bu eski ve biraz yanlış cevap - Doğru yanıt Android Geliştiricileri Blog açıklanmıştır: making android games that play nice

+1

Bazı aygıtlarda, ses düzeyini değiştirdiğinizde hasFocus == false ileWidowFocusChanged çağrılacak mı? – Gallal

+0

Yayınımdan bu yana, Google, tüm cihazlarda/yazılımlarda doğru bir şekilde bu konuyu ele alan daha iyi bir alternatif sağladı, orijinal gönderimi yukarıda düzenledim. – MichalisB