Android MediaPlayer在播放半小时后停止播放

时间:2013-02-15 08:37:40

标签: android debugging android-service android-mediaplayer

我正在写一个媒体播放应用。它工作正常,但播放约30分钟后播放停止,据我所知,它只发生在我出去跑步时。我不认为(但我不确定)当我连接到调试器时会发生这种情况,但由于发生错误需要很长时间,所以调试非常烦人。

即使MediaPlayer正在运行它自己的(绑定)服务,我也觉得这个bug可能与android在屏幕关闭一段时间之后暂停/停止我的应用程序有关(当我没有这种情况时就不会发生这种情况调试)。但这只是猜测。

我的问题不是确切的问题,而是如何调试这类问题。我已将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);

1 个答案:

答案 0 :(得分:1)

您不会调用startForeground和stopForeground。

  

已启动的服务可以使用startForeground(int,Notification)API将服务置于前台状态,系统认为该服务是用户主动了解的内容,因此在内存不足时不会成为查杀的候选者。 (从理论上讲,服务在当前前台应用程序的极端内存压力下被杀死仍然是可能的,但实际上这不应该是一个问题。)

当系统需要更多资源时,Android会终止您的服务。这种情况很难调试。这是特定于操作系统的行为。

当您开始播放时,在您的服务中调用startForeground,在停止时调用stopForeground。

有关服务生命周期的更多信息,请参阅此处:http://developer.android.com/reference/android/app/Service.html