2013-02-15 131 views
0

我正在編寫媒體播放應用程序。它工作正常,但播放大約30分鐘後播放停止,據我所知,它只發生在我出去跑步時。我不認爲(但我不知道)它發生在我連接到調試器時,但是由於它發生這種錯誤需要很長時間,所以調試非常煩人。Android MediaPlayer在播放半小時後停止

儘管MediaPlayer運行在它自己的(綁定)服務中,但我有一種感覺,這個錯誤可能與Android在屏幕關閉一段時間後暫停/停止我的應用程序有關(當我' m調試)。但這只是一個猜測。

我的問題不是確切的問題是什麼,而是如何調試這種問題。我已將BugSense附加到我的應用程序,但它不會拋出任何異常。任何想法的實際調試策略?

編輯:該服務可以在這裏找到:https://github.com/bottiger/SoundWaves/blob/5820196924ce9bc731f50c5def991351ed9b3a3b/src/info/bottiger/podcast/service/PlayerService.java

我使用下面的代碼綁定。

public ServiceConnection playerServiceConnection = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     mPlayerServiceBinder = ((PlayerService.PlayerBinder) service) 
       .getService(); 
     // log.debug("onServiceConnected"); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName className) { 
     mPlayerServiceBinder = null; 
     // log.debug("onServiceDisconnected"); 
    } 
}; 

和的onCreate()

 getActivity().bindService(bindIntent, playerServiceConnection, 
      Context.BIND_AUTO_CREATE); 
+0

發佈您的代碼,請。屏幕關閉時MediaPlayer不會停止。 你是否啓動服務並在服務中創建mediaPlyer。你打電話給該服務的startForeground? – 2013-02-15 08:41:21

+0

@Demand我只問了一個調試它的好方法。不過,我發佈了代碼,以便您可以查看它。 – Markus 2013-02-15 08:59:40

回答

1

你不叫startForeground和stopForeground。

一個啓動的服務可以使用startForeground(INT,通知)API把服務前臺狀態,當系統認爲它是一些用戶正在積極瞭解並因此不能殺死時的候選內存不足。 (它仍然是理論上可能的服務下,從目前的前臺應用程序極端的內存壓力被殺死,但在實踐中,這不應該是一個問題。)

的Android殺死時,系統需要更多的資源,爲您服務。這種情況很難調試。這是操作系統特定的行爲。

在您的服務中調用startForeground,開始播放時調用stopForeground,停止時調用stopForeground。

更多關於服務生命週期,你可以在這裏閱讀:http://developer.android.com/reference/android/app/Service.html