나는 1 분 또는 2 분 간격으로 위치를 자주 전송해야하는 Android 앱을 만들고 있습니다. 이를 위해 JobSchedulerService
을 사용합니다. 저는 Android N version
으로 .setPeriodic()
을 .setMinimumLatency()
으로 대체하여 15 분마다 한 번 이상 실행되도록했습니다. 사실 그것은 처음에는 정해진 시간에 주기적으로 실행되지만 잠시 후 약 7 ~ 9 분마다 실행됩니다.멈추지 않을 때마다 Jobscheduler 또는 서비스를 실행하는 방법은 무엇입니까?
배터리 절약 화이트리스트에는 이미 애플리케이션이 포함되어 있지만 작동하지 않았습니다. 아무런 제한없이 매분 또는 유사한 서비스를 실행할 수있는 방법이 있습니까? 앱에서 소비하는 배터리 양은 중요하지 않습니다.
편집는 :
이것은 내가 무엇을 시도했다입니다 :
ReceiverService :
public class ReceiverService extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
if (!isMyServiceRunning(ServiceBackground.class, ctx))
startWakefulService(ctx, new Intent(ctx, ServiceBackground.class));
new ServiceAlarmManager(ctx).register();
}
}
private boolean isMyServiceRunning(Class<?> serviceClass,Context context) {
ActivityManager manager = (ActivityManager)context. getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
Log.i("Service already","running");
return true;
}
}
Log.i("Service not","running");
return false;
}
}
ServiceAlarmManager
는 @madking 말했듯이 정확히 동일합니다.
이것은 실제로 끔찍한 실행입니다. 기기를 잠자 게 해주세요. – Vyacheslav
당신이 원하는 것은 불가능합니다 –
장치가 충전되기 때문에 그것은 불가능할 수 없습니다. 나는 배터리가 아니라 매분마다 위치를 전송하는 것이 우선입니다. – smartgg