2017-05-18 6 views
3

AndroidサービスでWebサーバー(NanoHTTPD)を実行しています。Android:ウェブサーバーを稼動させ続ける

onStartCommand()は、Service内のオーバーライドされたメソッドから値を返します。したがって、「sticky」である必要があります。

ただし、サービスが停止しているように見えるか、少なくともウェブサーバーが応答を停止します。これは、ほとんどの場合、デバイスがしばらくの間非アクティブになっていて、画面が消灯している場合に発生します。しかし、時にはそれが正常に動作しているように見える場合もあります。サービスの通知アイコンが表示されたままになります。

デバイスは何もしていないので、電源が入っています。

リクエストに応答するWebサーバーを維持するには何ができますか?あるいは、少なくとも停止の頻度を減らすことはできますか?

+0

「サービスは停止している」とき?しばらくして?要求を出した後に?デバイスがスリープ状態になるときは? – rupps

+0

質問が編集されました。 「スリープモード」のときにほとんど応答しないようですが、そうでない場合もあります。私は今START_STICKY_COMPATIBILITYの代わりにSTART_STICKYをandroid:persistent = "true"(これは厄介なフラグだと思われますが、私の場合は大丈夫です。デバイスは常に電源に接続されています)。 –

答えて

2

お使いの場合にはシステムによって殺害されていない最高のチャンス:

  • スタート「バッテリーの最適化を無視する」のリストにあなたのアプリケーションを含むようにstartForeground
  • プロンプトユーザーによるサービス(あなたがすることはできませんプログラムでこれを行います): Intent intent = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); startActivity(intent);
関連する問題