android:enabled是指一个服务是否可以被系统实例化。如果一个服务被禁用,它仍然可以在本地使用,但无法由系统启动。如果你想使用已禁用的服务,则需要手动启动它。如果完全不能使用,那么这个服务存在的意义何在呢?其实你可以将服务标签注释掉来达到同样的效果。如果你想创建一个不供其他应用程序使用的服务,android:enabled能否用于此目的还不确定。
那是什么意思?
这意味着它是否能够运行。
它能用吗?
如果它被禁用则不能用。
它只能在本地使用吗?
如果它被禁用则不是只能在本地使用。
如果完全不能使用,那有什么意义呢?
android:disabled
效果会继承,对于 activities 和 BroadcastReceivers 确实有用例。在服务的情况下,可能不太可能被使用,但仍可能具有价值(例如,为第三方提供的 API,用户可以选择退出)。
难道你不能注释掉服务标签吗?
Java 代码无法在运行时注释掉服务标签。但是,android:enabled
的值可以通过 PackageManager
在运行时进行修改。
android:exported="false"
是可行的方法。 - LaVepe