Android 如何启动特定口味的服务?

Android 如何启动特定口味的服务?,android,Android,我为我的应用程序编写了不同的风格,我有一个服务,我只想为其中一个运行 如何实现它?解决方案1 if("debug".equals(BuildConfig.FLAVOR) { // Start service A } else if ("release".equals(BuildConfig.FLAVOR) { // Start service B } 或 解决方案2 您还可以使用上述方法中止特定口味的服务: @Override public int onStartCommand

我为我的应用程序编写了不同的风格,我有一个服务,我只想为其中一个运行


如何实现它?

解决方案1

if("debug".equals(BuildConfig.FLAVOR) {
    // Start service A
} else if ("release".equals(BuildConfig.FLAVOR) {
    // Start service B
}

解决方案2

您还可以使用上述方法中止特定口味的服务:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    if("debug".equals(BuildConfig.FLAVOR) {
        stopSelf();
    }
    ....
}
解决方案3

此外,对于不同的口味,您可以使用不同的
AndroidManifest.xml

Base AndroidManifest.xml

在以下位置编辑文件:app/src/main/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application>
        ...
        <service android:name="com.test.Service" />
    </application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application>
        ...
        <service android:name="com.test.Service" android:enabled="true" tools:node="merge"/>
    </application>
</manifest>


您检查过了吗?当我在清单中定义服务时,服务从应用程序启动开始,并不关心此代码。您能分享一下您是如何启动服务的吗?我不确定,但只是将其添加到清单并不意味着它会自动启动…但我不确定。在任何情况下,您都可以在服务中使用上述代码。然后,如果使用了错误的味道,服务将自行完成,但我不确定——确实如此。服务不会自动启动
<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application>
        ...
        <service android:name="com.test.Service" android:enabled="true" tools:node="merge"/>
    </application>
</manifest>