2013-02-15 55 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

相关问题