我想在android中使用后台服务。为此,我使用了后台服务,前台服务和作业计划程序。但是,如果未启用自动启动选项,我的应用程序将无法在后台运行。
我还添加了background,前台服务和Job Scheduler。 我添加了代码以将用户重定向到自动启动设置启用。 正如我在许多应用程序中看到的那样,他们不会要求用户启用自动启动功能(例如whatsapp,flipkart)。
private void scheduleJob() {
ComponentName componentName = new ComponentName(this, MyJobService.class);
JobInfo jobInfo = new JobInfo.Builder(123, componentName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE)
// .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setPersisted(true) // job alive even if we reboot
// .setPeriodic(15 * 60 * 1000) // 15 mins
.setPeriodic(5 * 1000) // 5 secs
.build();
JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
int resultCode = jobScheduler.schedule(jobInfo);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Log.e(TAG, "Job Scheduled");
} else {
Log.e(TAG, "Job Scheduling failed");
}
在未启用自动启动选项的情况下,我的应用无法在后台运行。 我希望它自动启用。 Autostart enables automatically when you install app
答案 0 :(得分:0)
可以实施创建粘性服务并在您的主要活动中注册它,并且在启动完成后,只要需要重新启动应用程序,就应该刷新服务,只需刷新服务并创建通知或刷新服务即可。代码:
public static Boolean RestartApp1(Activity activity) {
if (!GlobalData.checkAndRequestPermissions(activity)) {
Intent i = activity.getBaseContext().getPackageManager().getLaunchIntentForPackage(activity.getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(i);
return false;
} else {
return true;
}
}
if (GlobalData.RestartApp1(activity)) {
getSharedData();
findViews();
initViews();
setActionBarSDK();
}