2016-03-28 59 views
6

我正在为Android构建音乐流媒体应用程序。“电池省电”功能导致我的音乐服务中断

在这个程序中,我有一个Service它负责播放来自HTTP服务器的音频。在玩之前,我确认startForeground()并获得部分WakeLock,以便我的服务不会被杀死。为了以防万一,我还得到了一个WifiLock

该服务工作正常......只要我的手机不在“节电模式”。当我打开电池节省并断开手机与电源的连接时,我的服务因火而死亡!

不幸的是,它似乎甚至没有被调用onDestroy(),所以即使服务已经死亡,我的来自startForeground()的通知仍然可见。

这款手机是三星Galaxy S6,搭载Android 6.0.1。

两个问题:

  1. 有没有一种方法,我可以保持,尽管电池省电啄活着的服务?
  2. 如果没有,我想知道至少当我的服务被杀害,以便我可以做一些清理(删除通知&内部东西)。

有什么建议吗?

+0

你找到一个解决这个问题?我有类似的情况 - 取决于设备和确切的Android版本无论是应用程序或无线连接停止忽略所有wakelocks – mhenryk

+0

我不知道有任何修复。不确定它在Android 7中甚至已得到修复......我的应用程序不是唯一的:即使谷歌音乐和Spotify也有问题。 – aspyct

+0

Android 7仍然存在问题。感谢您的信息。 – mhenryk

回答

0

这是可能的通过使用前景服务在一个单独的过程持有部分唤醒锁。

android:process="process_name" 

(文件:http://developer.android.com/guide/topics/manifest/service-element.html

注意,你不应该在一个多进程环境中使用SharedPreferences

也看到这个问题:https://code.google.com/p/android/issues/detail?id=193802

+1

这似乎不起作用,除非我做错了什么。我已经为应用和服务设置了不同的流程,但仍然没有改进。类似于'。你能发现错误吗? – aspyct

+0

我认为这是为了把服务放在一个单独的过程中 –