2016-03-28 7 views
6

私はAndroid用の音楽ストリーミングアプリを構築しています。私の音楽サービスを殺す「バッテリーセーバー」機能

このアプリケーションでは、Serviceがあり、HTTPサーバーからオーディオを再生します。再生する前に、私はstartForeground()に確かめて、WakeLock部分を取得して、私のサービスが殺されないようにします。また、場合によってはWifiLockが得られます。

私の電話が「バッテリー節約モード」でない限り、サービスは正常に機能します。私は電池の節約をオンにし、電源から私の電話を切断する分、私のサービスは火事で殺される!

残念ながら、が呼び出されたようでもないので、startForeground()からの私の通知は、サービスが停止しても表示されたままです。

携帯電話はAndroid 6.0.1を搭載したSamsung Galaxy S6です。

つの質問:

  1. 私はバッテリーセーバーブツにもかかわらず、生きているサービスを保つことができる方法はありますか?
  2. もしそうでなければ、少なくとも私のサービスが抹消されたことを知りたいので、私はちょっとしたクリーンアップをすることができます(通知&内部のものを削除してください)。

+0

あなたはこの問題の解決策を見つけますか?私はsimiliarの場合があります - デバイスや正確なAndroidのバージョンに応じて、アプリまたは無線LAN接続はすべてのwakelocksを無視して停止します – mhenryk

+0

私はそのための修正を知らない。確かにそれは実際にはAndroid 7で修正されているかわからない...私のアプリは唯一ではなかった:Googleの音楽とスポットにも問題があった。 – aspyct

+0

Android 7にはまだ問題があります。情報のおかげで。 – mhenryk

答えて

0

これは、フォアグラウンドサービスを別のプロセスで使用することで可能です。部分的なワockロックを保持しています()。

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

私はそれがサービスを別のプロセスに入れることを意図していたと思います –