1

Skype のようなアプリケーションは、基本的に 24 時間 365 日稼働するサービスを使用していることに気付きました。タスクキラーを使用して手動で強制終了することもできません (サービスを実行してサービスを強制終了することで強制終了できます)。これはどのように実装されていますか?

Android 2.3 では、しばらく実行するとサービスが強制終了されることがわかりました。START_STICKY でサービスを開始しても、onDestroy() は呼び出されません。ただし、これは私の 2.1 デバイスでは問題なく動作します。つまり、サービスは強制終了されません。

ありがとう

4

1 に答える 1

3

これはどのように実装されますか?

アイコンを表示するSkypeのスクリーンショットに基づくと、Notificationほとんどの場合、を使用していstartForeground()ます。

Android 2.3では、しばらく実行した後にサービスが強制終了されることがわかりました。

それは完全に正常です。

まず、ほとんどのAndroidアプリケーションは、「基本的に24時間365日稼働する」サービスを実際には必要としません。ユーザーはそのようなサービスを好まないため、タスクキラーと実行中のサービス画面およびOSの自動キルロジックが存在します。サービスを「24時間365日」実行する必要がある唯一の理由は、マイクロ秒ごとに値を提供する場合です。SkypeのようなVOIPクライアントは、電話の着信を待っているため、マイクロ秒ごとに価値を提供します。ほとんどのAndroidアプリケーションはこの基準を満たしていません。

サービスが継続的に実行されているが、ユーザーが制御する期間(音楽プレーヤーなど)の場合startForeground()は、優れたソリューションです。

それ以外の場合は、「基本的に24時間365日実行」するサービスを排除し、を使用してユーザー制御可能なポーリングシステムに切り替える方法を見つけてAlarmManagerください。そのため、サービスは、価値を提供している場合を除いて、通常はメモリにありません。

于 2011-07-05T11:53:18.130 に答える