我通过以下方式从前台活动启动服务:

Intent i = new Intent();
    i.setComponent(new ComponentName("com.xxx.yyy", "com.xxx.yyy.SyncService"));
    ComponentName c = ctx.startService(i);

但我得到了这个例外

引起:java.lang.IllegalStateException:不允许启动服务Intent :app在后台uid NULL

我从我的应用程序中调用startService,它位于前台,因此限制Limits不适用于此处 .

HOWEVER

如果我手动启动其他应用程序,其中包含服务并将其放在后台,然后从我的应用程序调用该服务,工作正常 . 但只有当其他应用程序在后台运行时 .