2012-11-26 38 views
6

之前,我有一個是從一個叫AlarmManager活動。這是一個警報信息。的onStop稱爲在onStart

當從Key Guard調用活動時,生命週期從onCreate - > onStart - > onResume - > onPause - > onStop,然後返回onCreate - > onStart - > onResume。

因爲它是一個報警的活動,我已經把活動的的onStop裏面MediaPlayer.stop線,但現在的報警聲停止它啓動之後。

如果我把裏面MediaPlayer.stop的onDestroy,我得到正確的行爲,但如果用戶按下home鍵,活性消失和聲音繼續播放。

任何人都可以知道爲什麼的onPause和的onStop期間在這種情況叫什麼?

編輯:後在日誌中的一些調查,我發現這行:

11-26 17:39:01.273: I/ActivityManager(385): Activity reported stop, but no longer stopping: ActivityRecord{41827a90 u0 net.xisberto.workschedule/.AlarmMessageActivity} 

回答

5

OK,雖然我來處理這個問題,所以在這裏有雲:

現在我開始時onResumeMediaPlayer,但我不重新啓動它,如果它已經打:

@Override 
protected void onResume() { 
    super.onResume(); 
    ... 
    if (!mMediaPlayer.isPlaying()) { 
     mMediaPlayer.start(); 
    } 
    ... 
} 

而且我在onStop阻止它,但只有當活動isFinishing

@Override 
protected void onStop() { 
    super.onStop(); 
    if (isFinishing()) { 
     if (mMediaPlayer != null) { 
      mMediaPlayer.stop(); 
      mMediaPlayer.release(); 
      mMediaPlayer = null; 
     } 
    } else { 
     ... 
    } 
} 

由於所描述的情況在活動期間沒有完成,但在重新啓動(配置變化,我認爲),在MediaPlayer不停止。

我的代碼是不完全一樣的,因爲我使用一些其他的功能,我使用了一個通知,使用戶回到活動。完整的代碼是在這裏:https://github.com/xisberto/workschedule/blob/master/src/net/xisberto/work_schedule/AlarmMessageActivity.java

0

Properbly你旋轉你的設備,而無需處理該事件。

您可以用清單的小改款處理這個問題:經過一年多的我意識到,這個問題沒有得到回答更

<activity android:name=".MyActivity" 
     android:configChanges="orientation" 
     android:label="@string/app_name"> 
+0

不,我還沒有旋轉的裝置。我很確定,因爲這總是會發生的,即使設備在我的桌子上。 – Xisberto