Service Killerで停止できないサービス
非公開のサービス
Androidのサービスには、外部のアプリからアクセスされる(外部に機能を提供する)ことを前提に設計されたサービスと、アプリ(パッケージ)内部からのみ利用されることを前提に設計されたサービスがあります。
これは、アプリ(パッケージ)のexportedという属性で表現され、Service Killerの「詳細情報」の画面にて確認できます(v1.1.0より)。
exported=falseと設定されたサービスには外部のアプリからはアクセスできません。つまり、Service Killerで停止できるサービスは、exported=trueと設定されたサービスのみになります。
そのため、Service Killerでは、exported=falseとなっているサービスはサービス一覧に表示しない仕様としています(ver.1.1.0より)。
なお、Service Killerの設定「非公開サービスを表示しない」を無効にすることにより、exported=falseのサービスも一覧に表示することができます。
Permissionで保護されたサービス
exported=trueなサービスであってもService Killerでは停止できないサービスがあります。AndroidのアプリにはPermissionという概念があり、これにより利用する機能を宣言する、または、利用されることを保護することができます。
あるサービスが特定のPermissionで保護されている場合には、同一のPermissionを利用することを宣言しているアプリ以外からは、そのサービスにアクセスできません
つまり、Service Killerが使うことを宣言しているPermission以外で保護されているサービスは、Service Killerでは停止することができないということになります。
サービスが保護されているPermissionは、Service Killerの「詳細情報」の画面にて確認できます(v1.1.0より)。
また、保護されているPermissionにはProtection Levelという保護の強度のような定義があり、以下のいずれかが設定されています。
- normal
- dangerous
- signature
- signatureOrSystem
このうち、signatureもしくはsignatureOrSystemで保護されている場合には、サードパーティアプリであるService Killerでは停止できません。なお、各Protection Levelの詳細についてはこちらに説明をご確認ください。
Service Killerが利用することを宣言しているPermissionは、Permission情報でご確認いただけます。
以上は、開発者のAndroidの理解に基づき解説しておりますが、誤りがありましたらご指摘を頂けると幸いです。また、特定のサービスを停止するためにService KillerにPermissionの追加のご要望がありましたら、対応を検討しますのでご連絡ください。