0

私はアクセスされ、AIDLを介してクライアントアプリケーションによってその機能を使用するアンドロイドリモートサービスを持っています。 私は低メモリのケースについていくつかの疑問を持っています。遠隔サービスが複数のクライアント/アプリケーションによって使用されている間に、おそらく低メモリのような状況でOSによって殺される機会がありました。メモリ不足のため、Android-Remote-ServiceがOSによって強制終了されないようにするにはどうすればよいですか?

答えて

1

リモートサービスは複数のクライアント/アプリケーションで使用されていますが、メモリ不足の状況でOSによって殺される可能性があります。

AIDLインタフェースを露光プロセスの実効重要性の高い:

  • そのプロセスの固有の重要性、及び
  • そのプロセスのすべてのクライアントの最も重要

重要度の高いプロセスは、Android SDKアプリケーションのプロセスを終了させるOSのうち、システムRAMを解放してotで使用できるようにする「メモリ不足のキラー」によって、単独で放置される可能性が高くなります彼女のアプリのプロセス。

アクティブなクライアントがあり、それらのクライアントが重要な場合は、アプリが重要になります。逆に、アクティブなクライアントがない場合や、重要ではないクライアントの場合、プロセスは重要ではありません。

メモリが足りないため、Android-Remote-ServiceがOSによって強制終了されないようにするにはどうすればよいですか?

このサービスをAndroid SDKアプリケーションではなく、ネイティブLinuxデーモンとして実装する独自のファームウェアを構築します。

これ以外の場合は、メモリ不足、ユーザーの操作(設定の[強制停止]など)、またはその他の理由(処理されない例外など)によってプロセスを終了することができます。

サービスをフォアグラウンドサービスにして、重要度が高く、プロセスを終了させないようにすることができます。これには、ユーザーに表示されるNotificationの形式のコストがあります。

代わりに、理想的には、プロセスの終了が問題にならないようにアプリケーションを設計します。

+0

だから、このリモートサービスをAOSPにシステムサービスとして追加することが助けになるか、何か他のことをする必要があると言いますか? – SachinS

+0

@SachinS: "このリモートサービスをAOSPにシステムサービスとして追加すると助けになると言っていますか?"私は、メモリ不足のキラーは、接合子から分岐したAndroid SDKプロセスを殺すだけだと言っています。通常のLinuxデーモンは、メモリ不足のキラーの影響を受けず、設定によってユーザーが停止することはできません。 – CommonsWare

+0

"このサービスをAndroid SDKアプリケーションではなく、ネイティブLinuxデーモンとして実装する"。これに関するヘルプ/手順はどこにありますか? – SachinS

関連する問題