2011-11-10 23 views
5

Bir sonraki Etkinliğe geçmeden önce çalıştırdığım bir AsyncTask var. Bu AsyncTask'ın içinde bir MediaPlayer var.OnPause'dan sonra AsyncTasks'e ne olur?

protected void onPause() { 
      stopProgress(); 
      Log.i(TAG, "onPAUSE"); 
      try { 
      } finally { 
      // If we allocated a player, then cleanup after it 
      if (player != null) { 
       player.reset(); 
       player.release(); 
       player = null; 
       Log.d(TAG,"end of player cleanup"); 
          } 
      } 
      super.onPause(); 
     } 

Kullanım Senaryo: Oyuncunun bile yüklenmeden önce 1

  • Taşı Etkinlik 2'ye üzerine Aktivite içinde

    1. tıklayın oynat düğmesi (OnPause gelen günlük bilgileri kesinlikle denir).
    2. Etkinlik 2'deyken, işlem bittiğinde, Etkinlik 1'deki oynatıcı çalar.
  • cevap

    3

    AsyncTask'a hiçbir şey yapılmamalıdır. Koşmaya devam edecek. Ancak, bu arka planda bir medya oynatıcı çalıştırmak için harika bir yol değildir (bunun için bir hizmet kullanın). Kodunuz medya yürütücüyü iptal edecektir, ancak AsyncTask'taki neye bağlı olarak, hala aktif olabilir. AsyncTask'ın görev için cancel (boolean mayInterruptIfRunning) numaralı telefonu arayarak öldürülmesini sağlayabilirsiniz. senin MediaPlayer nesne hala yukarıdaki kodu kullanarak çalışan Sebebi ne olursa olsun Eğer

    ardından AsyncTask.cancel(true) arayıp void onCancelled (Result result) geçersiz kılmak ve sonra iplik içinden MediaPlayer öldürür. onCancelled sadece doInBackground getiri SONRA adı verilecek (veya periyodik bir şey senin parçacığı üzerinde cancel() denilen görmek için isCancelled() kontrol edebilirsiniz, unutmayın. Sonra cancel(true) ayarlarsanız ben doInBackground bitmesini bekleyen rahatsız etmez inanıyoruz, ama tabii ki işte

    1

    İçinde ne yaptığınızı tam olarak bilmiyorum AsyncTask, ama ne olsa onPause() numaralı telefona çağrılmalı. onDestroy() çağrılırsa ve AsyncTask öğelerinizi Aktivitenizde başvuruyorsanız, AsycnTask esasen boş gösterici istisnaları atmaya başlayacaktır.

    +0

    aslında, görevde, player = new MediaPlayer() .... duh :) – hunterp

    +1

    ayarlıyorum, onDestroy() çağrıldığında, async görevi iptal edilmelidir. –

    İlgili konular