如何在oreo中创建一个长期运行的服务

时间:2018-04-25 17:53:29

标签: java android

我在这个应用程序中制作电池警报应用程序我想在电池充满时响铃,我需要使用服务但在奥利奥我不能长时间运行我的服务所以请告诉我如何运行我在奥利奥的服务很长时间。我也使用 startForgroundService 和通知,但这在Oreo.my中也不起作用。最小SDK版本是15,目标是27 请帮我。 感谢...

1 个答案:

答案 0 :(得分:0)

您无法在oreo中创建长期运行的服务。当手机进入睡眠模式时,服务将被终止。

你可以JobScheduler

ComponentName serviceComponent = new ComponentName(context, TestJobService.class);
        JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);
        builder.setMinimumLatency(1 * 1000); // wait at least
        builder.setOverrideDeadline(3 * 1000); // maximum delay
        //builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); // require unmetered network
        //builder.setRequiresDeviceIdle(true); // device should be idle
        //builder.setRequiresCharging(false); // we don't care if the device is charging or not
        JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
        jobScheduler.schedule(builder.build());

将您的要求设为builder.setRequiresCharging(true); 并检测那里的电池电量。

来源:http://www.vogella.com/tutorials/AndroidTaskScheduling/article.html

https://developer.android.com/topic/performance/scheduling https://developer.android.com/reference/android/app/job/JobScheduler