【问题标题】:How to start a service for a specific flavors?如何为特定口味启动服务?
【发布时间】:2019-10-31 01:06:27
【问题描述】:

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

我该如何实现它?

【问题讨论】:

  • 你检查过this吗?

标签: android


【解决方案1】:

解决方案 1

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

或者

if("debug".equals(BuildConfig.FLAVOR) {
    // Start service A onfly if using "debug" flavor
}

解决方案 2

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

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

解决方案 3

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

基础 AndroidManifest.xml

编辑文件:app/src/main/AndroidManifest.xml

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

风格特定的 AndroidManifest.xml

在 app/src/FLAVOR_A/AndroidManifest.xml 编辑/创建文件

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

这只会将标志 android:enabled="true" 添加到 FLAVOR_A

您可以找到有关合并清单文件here的更多信息

【讨论】:

  • 当我在manifest中定义一个服务时,该服务从应用程序启动开始,并不关心这段代码。
  • 您能分享一下您是如何开始服务的吗?我不确定,只是将它添加到清单中并不意味着它会自动启动......但我不确定。在任何情况下,您都可以在您的服务中使用上面的代码。然后,如果使用了错误的风味,服务会自行结束
  • 但我不确定 - 确实如此。服务不会自动启动
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 2020-03-17
  • 2011-05-26
  • 2017-10-15
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多