每 5 分钟写入一次表并始终运行

Sae*_*eed 5 android alarmmanager

目标:

我想要一个服务,每 5 分钟在数据库表中写入一条记录。

完成的工作:

为了实现目标,Alarmmanager使用了每 5 分钟执行一次此操作。不幸的是,过了一会儿Alarmmanager就会熄灭(对于 android 8 或更高版本)。

public class SensorInfoAlarmManager {
    public void setReminder(Context context) {

        MsdSQLiteOpenHelper msdOpenHelper = new MsdSQLiteOpenHelper(context);
        SQLiteDatabase dbInstanse = MsdDatabaseManager.getInstance().openDatabase();
        int interval = msdOpenHelper.getSensorInfoInterval(dbInstanse);

        Calendar calendar = Calendar.getInstance();
        Calendar setcalendar = Calendar.getInstance();

        setcalendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
        setcalendar.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
        setcalendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND));
        cancelReminder(context);

        ComponentName receiver = new ComponentName(context, SensorInfoAlarmReceiver.class);
        PackageManager pm = context.getPackageManager();

        pm.setComponentEnabledSetting(receiver,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);
        Intent intent1 = new Intent(context, SensorInfoAlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
        android.app.AlarmManager am = (android.app.AlarmManager) context.getSystemService(ALARM_SERVICE);
        am.setRepeating(android.app.AlarmManager.RTC_WAKEUP, (long) interval* 1000, (long) interval * 1000, pendingIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

它接缝 android 不允许Alarmmanager始终运行。

我使用了这些解决方案123,但没有找到结果。

问题是什么?有更好的解决方案吗?