我使用Psyonspotify代码作为将libspotify集成到我的应用程序中的框架。我删除了很多代码,因为我的应用程序只需要查询轨道和创建播放列表,但我保留了初始化和运行循环代码。
我正在使用libspotify 12.1.51。我正在测试运行Android 4.2.2的HTC One。
图书馆表现良好,我可以登录,查询播放列表,查询曲目,创建播放列表,并按照我想要的方式将曲目添加到播放列表。问题是有些随机的应用程序挽救了SIGSEGV。我无法准确确定它发生的位置,但是在调用sp_session_process_events时肯定会发生(偶尔)。正如在单独的post中所建议的那样,我通过检查连接状态(sp_session_connectionstate)来保护某些呼叫。
在尝试寻找解决方案时,我在GitHub上遇到了issue-78 cocoalibspotify,这是最后一条评论(截至今天):
我在一个vanilla libspotify-12.1.51 Mac应用程序中遇到了类似的崩溃。当wifi丢失时,在session_process_events之后在sp_error_message中崩溃。
我知道我的办公室里有一个非常好的Wi-Fi连接,而且一个非常微弱的3G信号,Spotify的任何人都可以评论这是否可能是我遇到困难的原因吗?如果是的话,有什么方法可以防范它,或者我只是需要等待新版本的库?
答案 0 :(得分:1)
过去,3G / WiFi之间的切换一直是libspotify问题的已知来源。 libspotify本身可能会崩溃,我已经向内部组发送了一封邮件,维护libspotify来ping它们以获取更多信息(我自己在Spotify工作,但不在libspotify团队工作)。
如果崩溃来自libspotify,那么你可以做的就是防范它,最好的方法是在Android服务中抽象libspotify(我认为你已经在做了),然后从UI重启服务APK如果你发现它崩溃了。这可能会花费你几秒钟的等待时间,但它比整个应用程序火上浇油更好。
编辑:有一个新的Spotify SDK for Android,它取代了libspotify,并且更容易开发。您应该将任何libspotify项目迁移到新SDK。