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始终运行。
问题是什么?有更好的解决方案吗?
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |