Merge "IdleMaint: run more frequently during 3AM to 4AM" into qt-qpr1-dev
This commit is contained in:
@@ -27,6 +27,7 @@ import android.content.ComponentName;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class MountServiceIdler extends JobService {
|
public class MountServiceIdler extends JobService {
|
||||||
private static final String TAG = "MountServiceIdler";
|
private static final String TAG = "MountServiceIdler";
|
||||||
@@ -48,7 +49,7 @@ public class MountServiceIdler extends JobService {
|
|||||||
mStarted = false;
|
mStarted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ... and try again tomorrow
|
// ... and try again right away or tomorrow
|
||||||
scheduleIdlePass(MountServiceIdler.this);
|
scheduleIdlePass(MountServiceIdler.this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -98,24 +99,32 @@ public class MountServiceIdler extends JobService {
|
|||||||
public static void scheduleIdlePass(Context context) {
|
public static void scheduleIdlePass(Context context) {
|
||||||
JobScheduler tm = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
JobScheduler tm = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
||||||
|
|
||||||
Calendar calendar = tomorrowMidnight();
|
final long today3AM = offsetFromTodayMidnight(0, 3).getTimeInMillis();
|
||||||
final long timeToMidnight = calendar.getTimeInMillis() - System.currentTimeMillis();
|
final long today4AM = offsetFromTodayMidnight(0, 4).getTimeInMillis();
|
||||||
|
final long tomorrow3AM = offsetFromTodayMidnight(1, 3).getTimeInMillis();
|
||||||
|
|
||||||
|
long nextScheduleTime;
|
||||||
|
if (System.currentTimeMillis() > today3AM && System.currentTimeMillis() < today4AM) {
|
||||||
|
nextScheduleTime = TimeUnit.SECONDS.toMillis(10);
|
||||||
|
} else {
|
||||||
|
nextScheduleTime = tomorrow3AM - System.currentTimeMillis(); // 3AM tomorrow
|
||||||
|
}
|
||||||
|
|
||||||
JobInfo.Builder builder = new JobInfo.Builder(MOUNT_JOB_ID, sIdleService);
|
JobInfo.Builder builder = new JobInfo.Builder(MOUNT_JOB_ID, sIdleService);
|
||||||
builder.setRequiresDeviceIdle(true);
|
builder.setRequiresDeviceIdle(true);
|
||||||
builder.setRequiresCharging(true);
|
builder.setRequiresBatteryNotLow(true);
|
||||||
builder.setMinimumLatency(timeToMidnight);
|
builder.setMinimumLatency(nextScheduleTime);
|
||||||
tm.schedule(builder.build());
|
tm.schedule(builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Calendar tomorrowMidnight() {
|
private static Calendar offsetFromTodayMidnight(int nDays, int nHours) {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.setTimeInMillis(System.currentTimeMillis());
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
calendar.set(Calendar.HOUR_OF_DAY, 3);
|
calendar.set(Calendar.HOUR_OF_DAY, nHours);
|
||||||
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
calendar.set(Calendar.SECOND, 0);
|
calendar.set(Calendar.SECOND, 0);
|
||||||
calendar.set(Calendar.MILLISECOND, 0);
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
calendar.add(Calendar.DAY_OF_MONTH, 1);
|
calendar.add(Calendar.DAY_OF_MONTH, nDays);
|
||||||
return calendar;
|
return calendar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user