Android设备每次插入设备时运行
问题描述:
在我的Android应用程序中,每当设备插入并闲置时都需要运行后台服务(应在用户将设备连接到充电器后启动,断开它)。Android设备每次插入设备时运行
我想要的是类似的事情监听ACTION_POWER_CONNECTED广播,但针对奥利奥这个广播不会被发送。
我尝试了Evernote的Android-Job,因为它不需要Google Play服务,就像Firebase JobDispatcher一样。
new JobRequest.Builder(DemoSyncJob.TAG)
.setRequiresCharging(true)
.setRequiresDeviceIdle(true)
.build()
.schedule();
问题是我不想每次都安排这项工作。相反,我想要安排一次工作,并在用户每次将他的设备连接到充电器时运行。
怎么办? 谢谢。
答
因为这是对我很好运行作业每天只有一次,但只有当设备被插入,我已经解决了这个问题是这样的:
public class ProcessPhotosJob extends Job {
public static final String TAG = "process_photos_job";
@NonNull
@Override
protected Result onRunJob(Params params) {
new ProcessPhotos().execute(getContext());
scheduleForTomorrow();
return Result.SUCCESS;
}
public static void scheduleNow() {
schedule(1);
}
public static void scheduleForTomorrow() {
schedule(TimeUnit.DAYS.toMillis(1));
}
private static void schedule(long delayMillis) {
if (!JobManager.instance().getAllJobRequestsForTag(TAG).isEmpty()) {
// Job already scheduled
return;
}
new JobRequest.Builder(ProcessPhotosJob.TAG)
.setExecutionWindow(delayMillis, delayMillis + TimeUnit.DAYS.toMillis(1))
.setRequiresCharging(true)
.setRequiresDeviceIdle(true)
.setRequirementsEnforced(true)
.setUpdateCurrent(true)
.build()
.schedule();
}
}
希望它可以帮助别人。