diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 78c3a73..2ddccba 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3296,7 +3296,7 @@
             </intent-filter>
         </receiver>
 
-        <service android:name=".fuelgauge.batterytip.AnomalyCleanUpJobService"
+        <service android:name=".fuelgauge.batterytip.AnomalyCleanupJobService"
                  android:permission="android.permission.BIND_JOB_SERVICE" />
 
         <service android:name=".fuelgauge.batterytip.AnomalyDetectionJobService"
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanUpJobService.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java
similarity index 86%
rename from src/com/android/settings/fuelgauge/batterytip/AnomalyCleanUpJobService.java
rename to src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java
index d5f4879..17aba2b 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanUpJobService.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java
@@ -22,7 +22,6 @@
 import android.app.job.JobService;
 import android.content.ComponentName;
 import android.content.Context;
-import android.os.AsyncTask;
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
@@ -32,7 +31,7 @@
 import java.util.concurrent.TimeUnit;
 
 /** A JobService to clean up obsolete data in anomaly database */
-public class AnomalyCleanUpJobService extends JobService {
+public class AnomalyCleanupJobService extends JobService {
     private static final String TAG = "AnomalyCleanUpJobService";
 
     @VisibleForTesting
@@ -41,12 +40,13 @@
     public static void scheduleCleanUp(Context context) {
         final JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
 
-        final ComponentName component = new ComponentName(context, AnomalyCleanUpJobService.class);
+        final ComponentName component = new ComponentName(context, AnomalyCleanupJobService.class);
         final JobInfo.Builder jobBuilder =
                 new JobInfo.Builder(R.id.job_anomaly_clean_up, component)
-                .setMinimumLatency(CLEAN_UP_FREQUENCY_MS)
-                .setRequiresDeviceIdle(true)
-                .setPersisted(true);
+                        .setPeriodic(CLEAN_UP_FREQUENCY_MS)
+                        .setRequiresDeviceIdle(true)
+                        .setRequiresCharging(true)
+                        .setPersisted(true);
 
         if (jobScheduler.schedule(jobBuilder.build()) != JobScheduler.RESULT_SUCCESS) {
             Log.i(TAG, "Anomaly clean up job service schedule failed.");
@@ -61,7 +61,7 @@
         ThreadUtils.postOnBackgroundThread(() -> {
             batteryDatabaseManager.deleteAllAnomaliesBeforeTimeStamp(
                     System.currentTimeMillis() - TimeUnit.HOURS.toMillis(
-                            policy.dataHistoryRetainHour));
+                            policy.dataHistoryRetainDay));
             jobFinished(params, false /* wantsReschedule */);
         });
 
@@ -70,6 +70,6 @@
 
     @Override
     public boolean onStopJob(JobParameters jobParameters) {
-        return true;
+        return false;
     }
 }
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java
index f658627..d81dc34 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java
@@ -54,6 +54,10 @@
                     extraIntent, PendingIntent.FLAG_UPDATE_CURRENT);
 
             uploadPendingIntent(statsManager, pendingIntent);
+
+            if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+                AnomalyCleanupJobService.scheduleCleanUp(context);
+            }
         }
     }
 
diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java
index 0a24b00..4f21e11 100644
--- a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java
+++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionReceiver.java
@@ -44,6 +44,5 @@
         bundle.putLong(KEY_ANOMALY_TIMESTAMP, System.currentTimeMillis());
 
         AnomalyDetectionJobService.scheduleAnomalyDetection(context, intent);
-        AnomalyCleanUpJobService.scheduleCleanUp(context);
     }
 }
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
index fcdbb3a..17284a0 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
@@ -23,6 +23,7 @@
 import android.util.Log;
 
 import java.time.Duration;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Class to store the policy for battery tips, which comes from
@@ -43,7 +44,7 @@
     private static final String KEY_REDUCED_BATTERY_PERCENT = "reduced_battery_percent";
     private static final String KEY_LOW_BATTERY_ENABLED = "low_battery_enabled";
     private static final String KEY_LOW_BATTERY_HOUR = "low_battery_hour";
-    private static final String KEY_DATA_HISTORY_RETAIN_HOUR = "data_history_retain_hour";
+    private static final String KEY_DATA_HISTORY_RETAIN_DAY = "data_history_retain_day";
     private static final String KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE = "excessive_bg_drain_percentage";
 
     /**
@@ -145,18 +146,19 @@
     public final int lowBatteryHour;
 
     /**
-     * TTL hour for anomaly data stored in database
+     * TTL day for anomaly data stored in database
      *
      * @see Settings.Global#BATTERY_TIP_CONSTANTS
-     * @see #KEY_DATA_HISTORY_RETAIN_HOUR
+     * @see #KEY_DATA_HISTORY_RETAIN_DAY
      */
-    public final int dataHistoryRetainHour;
+    public final int dataHistoryRetainDay;
 
     /**
      * Battery drain percentage threshold for excessive background anomaly(i.e. 10%)
      *
      * This is an additional check for excessive background, to check whether battery drain
      * for an app is larger than x%
+     *
      * @see Settings.Global#BATTERY_TIP_CONSTANTS
      * @see #KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE
      */
@@ -193,7 +195,7 @@
         reducedBatteryPercent = mParser.getInt(KEY_REDUCED_BATTERY_PERCENT, 50);
         lowBatteryEnabled = mParser.getBoolean(KEY_LOW_BATTERY_ENABLED, false);
         lowBatteryHour = mParser.getInt(KEY_LOW_BATTERY_HOUR, 16);
-        dataHistoryRetainHour = mParser.getInt(KEY_DATA_HISTORY_RETAIN_HOUR, 72);
+        dataHistoryRetainDay = mParser.getInt(KEY_DATA_HISTORY_RETAIN_DAY, 30);
         excessiveBgDrainPercentage = mParser.getInt(KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE, 10);
     }
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanUpJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanUpJobServiceTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java
index 3da7bbd..4682d15 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanUpJobServiceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java
@@ -41,7 +41,7 @@
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class AnomalyCleanUpJobServiceTest {
+public class AnomalyCleanupJobServiceTest {
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
@@ -49,7 +49,7 @@
 
     @Test
     public void testScheduleCleanUp() {
-        AnomalyCleanUpJobService.scheduleCleanUp(application);
+        AnomalyCleanupJobService.scheduleCleanUp(application);
 
         ShadowJobScheduler shadowJobScheduler = Shadows.shadowOf(
                 application.getSystemService(JobScheduler.class));
@@ -57,7 +57,8 @@
         assertEquals(1, pendingJobs.size());
         JobInfo pendingJob = pendingJobs.get(0);
         assertThat(pendingJob.getId()).isEqualTo(R.id.job_anomaly_clean_up);
-        assertThat(pendingJob.getMinLatencyMillis()).isEqualTo(TimeUnit.DAYS.toMillis(1));
+        assertThat(pendingJob.getIntervalMillis()).isEqualTo(TimeUnit.DAYS.toMillis(1));
         assertThat(pendingJob.isRequireDeviceIdle()).isTrue();
+        assertThat(pendingJob.isRequireCharging()).isTrue();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
index abf04cd..188fe77 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
@@ -50,7 +50,7 @@
             + ",reduced_battery_percent=30"
             + ",low_battery_enabled=false"
             + ",low_battery_hour=10"
-            + ",data_history_retain_hour=24"
+            + ",data_history_retain_day=24"
             + ",excessive_bg_drain_percentage=25";
     private Context mContext;
 
@@ -78,7 +78,7 @@
         assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(30);
         assertThat(batteryTipPolicy.lowBatteryEnabled).isFalse();
         assertThat(batteryTipPolicy.lowBatteryHour).isEqualTo(10);
-        assertThat(batteryTipPolicy.dataHistoryRetainHour).isEqualTo(24);
+        assertThat(batteryTipPolicy.dataHistoryRetainDay).isEqualTo(24);
         assertThat(batteryTipPolicy.excessiveBgDrainPercentage).isEqualTo(25);
     }
 
@@ -101,7 +101,7 @@
         assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(50);
         assertThat(batteryTipPolicy.lowBatteryEnabled).isFalse();
         assertThat(batteryTipPolicy.lowBatteryHour).isEqualTo(16);
-        assertThat(batteryTipPolicy.dataHistoryRetainHour).isEqualTo(72);
+        assertThat(batteryTipPolicy.dataHistoryRetainDay).isEqualTo(30);
         assertThat(batteryTipPolicy.excessiveBgDrainPercentage).isEqualTo(10);
     }
 }
