有两种方法我可以建议
如果你准备修改APP_TIME表,你可以添加日期列以跟踪一天。在这种情况下,您可以根据日期向用户显示历史记录。您的查询需要有日期过滤器,并且不需要重置数据库。 (你可能仍然要删除比60天较早的项目只是为了保持数据库大小下限值)
该表可作如下修改
public void onCreate(SQLiteDatabase db) {
String CREATE_APPTIME_TABLE = "CREATE TABLE app_time (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"packageName TEXT UNIQUE," +
"appName TEXT," +
"elapsedTime INTEGER, " +
"dateCol VARCHAR(50))";
添加这两种方法
public static String getCurrentDate() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd", Locale.getDefault());
Calendar cal = Calendar.getInstance();
return dateFormat.format(cal.getTime());
}
public static String getDateFor(int date, int month, int year) {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd", Locale.getDefault());
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, date);
cal.set(Calendar.MONTH, month); // month starts from 0
cal.set(Calendar.YEAR, year);
return dateFormat.format(cal.getTime());
}
然后在你的查询中,你可以访问像这样的特定日子的行
// build query
String query = "SELECT * FROM " + TABLE_APPTIME + " WHERE dateCol = '" + getCurrentDate() + "'";
您可以使用AlarmManager在每天中午12:00执行,您可以在其中执行服务来重置定时器。 AlarmManager