从文档中可以看出,如果应用程序在收到意图后处于空闲状态,则可以调用startService()
。文档讨论短信/彩信广播意图,如果应用程序通过广播接收器接收任何意图,则不清楚应用程序是否置于白名单中。到目前为止,我没有找到一种方法来测试它将应用程序置于空闲状态。有什么提示吗?
答案 0 :(得分:0)
自Android O起,您只能在以下情况下调用startService():
对于#2,您基本上可以替换:
startService(startMyServiceIntent);
有了这个:
ComponentName serviceName = new ComponentName(context, MyJobService.class);
JobScheduler jobScheduler = (JobScheduler)context.getSystemService(Context.JOB_SCHDULER_SERVICE);
JobInfo startMySerivceJobInfo = new JobInfo.Builder(MyJobService.JOB_ID, serviceName).setMinimumLatency(100).build();
int result = jobScheduler.schedule(startMyServiceJobInfo);
然后你只需要一个扩展JobService的类来实际启动服务:
public class MyJobService extends JobService {
public static final int JOB_ID = 0; // app unique job id.
@Override
public boolean onJobStart(JobParameters params) {
...
startService(startMyServiceIntent);
...
return false;
}
}
这将在前台或后台启动您的服务。背景服务的运行时间仍有背景限制。请参阅:https://stackoverflow.com/a/44241192/786462
答案 1 :(得分:-1)
我回复自己:不,只有一些系统意图将应用程序放入白名单