文档中不清楚应用程序是否可以在收到意图后调用startService()
是否处于空闲状态。文档中提到了sms/mms的广播意图,目前还不清楚该应用是否被列入了白名单,是否通过广播接收器接收到了任何意图。直到现在,我还没有找到一种方法来测试它,让应用程序处于空闲状态。有什么小窍门吗?
最佳答案
由于Android O,您只能在以下情况下调用startService():
你的应用程序在前台。
使用jobscheduler/jobservice结束调用。
对于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