0

我使用Psyonspotify代码作为将 libspotify 集成到我的应用程序的框架。我删除了很多代码,因为我的应用程序只需要查询曲目和创建播放列表,但我保留了初始化和运行循环代码。

我正在使用 libspotify 12.1.51。我正在运行 Android 4.2.2 的 HTC One 上进行测试。

该库运行良好,我可以登录、查询播放列表、查询曲目、创建播放列表并将曲目添加到播放列表中,这正是我想要的。问题是应用程序会随机使用 SIGSEGV 退出。我无法确定它发生的确切位置,但它肯定会(偶尔)在调用sp_session_process_events时发生。正如在另一篇文章中所建议的那样,我通过检查连接状态 ( sp_session_connectionstate ) 来保护某些呼叫。

在试图找到解决方案时,我在 GitHub 上遇到了 cocoalibspotify 的issue-78,最后一条评论(截至今天)如下:

我在 vanilla libspotify-12.1.51 Mac 应用程序中遇到了非常类似的崩溃。当 wifi 掉线时,在 session_process_events 之后的 sp_error_message 中崩溃。

我知道我办公室里的 wi-fi 连接非常糟糕,而且 3G 信号也很弱,Spotify 的任何人都可以评论这是否是我遇到困难的原因吗?如果是,有什么方法可以防止它,还是我只需要等待库的新版本?

4

1 回答 1

1

过去,在 3G/WiFi 之间切换一直是 libspotify 问题的已知来源。libspotify 本身可能发生了崩溃,我已经向维护 libspotify 的内部小组发送了一封邮件,以 ping 他们以获取更多信息(我自己在 Spotify 工作,但不在 libspotify 团队中)。

如果崩溃来自 libspotify,则您无能为力,最好的方法是在 Android 服务中抽象 libspotify(我假设您已经在这样做),然后如果您从 UI APK 重新启动服务注意它崩溃了。这可能会花费您几秒钟的等待时间,但总比整个应用程序陷入困境要好。

编辑:有一个新的Spotify SDK for Android,它取代了 libspotify 并且更容易开发。您应该将所有 libspotify 项目迁移到新的 SDK。

于 2013-11-27T09:03:12.840 回答