使警报在开机后幸存下来
make alarms survive boot
我创建了一个应用程序,它允许用户输入作业截止日期,然后通知作业已到期,这一切都很好,但是,我找不到一个明确的例子来说明如何使警报在重启后仍然存在。
接收器上的数据库内容只是用特定的分配信息填充通知。警报本身不保存在数据库中,时间和日期由用户输入设置并直接传递给警报管理器。
警报创建页面:
Long nIdLong = System.currentTimeMillis();
String nId = nIdLong.toString();
final int _id = (int) System.currentTimeMillis();
Intent alarmIntent = new Intent(context, AlarmReceiver.class);
alarmIntent.putExtra("nID", nIdLong);
// make sure the intent have id's
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, _id, alarmIntent , 0);
AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
这是我的接收器:
public void onReceive(Context context, Intent intent)
{
long dbId = intent.getLongExtra("nID", 0);
String notificationId = Long.toString(dbId);
Log.i("App", "called receiver method");
try{
userDbHelper = new UserDbHelper(context.getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
cursor = userDbHelper.getAssignmentNotification(notificationId, sqLiteDatabase);
if (cursor.moveToFirst()) {
do {
id = cursor.getString(0);
name = cursor.getString(1);
subject = cursor.getString(2);
date = cursor.getString(3);
time = cursor.getString(4);
} while (cursor.moveToNext());
}
NotificationGenerator.generateNotification(context, date, time, name, subject);
}catch(Exception e){
e.printStackTrace();
}
}
https://examples.javacodegeeks.com/android/core/activity/android-start-service-boot-example/
此示例说明如何在启动时启动服务,将警报保存到数据库中,并让启动服务 运行 通过所有已保存的警报,以便在每次启动时重新创建它们。
我创建了一个应用程序,它允许用户输入作业截止日期,然后通知作业已到期,这一切都很好,但是,我找不到一个明确的例子来说明如何使警报在重启后仍然存在。
接收器上的数据库内容只是用特定的分配信息填充通知。警报本身不保存在数据库中,时间和日期由用户输入设置并直接传递给警报管理器。
警报创建页面:
Long nIdLong = System.currentTimeMillis();
String nId = nIdLong.toString();
final int _id = (int) System.currentTimeMillis();
Intent alarmIntent = new Intent(context, AlarmReceiver.class);
alarmIntent.putExtra("nID", nIdLong);
// make sure the intent have id's
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, _id, alarmIntent , 0);
AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
这是我的接收器:
public void onReceive(Context context, Intent intent)
{
long dbId = intent.getLongExtra("nID", 0);
String notificationId = Long.toString(dbId);
Log.i("App", "called receiver method");
try{
userDbHelper = new UserDbHelper(context.getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
cursor = userDbHelper.getAssignmentNotification(notificationId, sqLiteDatabase);
if (cursor.moveToFirst()) {
do {
id = cursor.getString(0);
name = cursor.getString(1);
subject = cursor.getString(2);
date = cursor.getString(3);
time = cursor.getString(4);
} while (cursor.moveToNext());
}
NotificationGenerator.generateNotification(context, date, time, name, subject);
}catch(Exception e){
e.printStackTrace();
}
}
https://examples.javacodegeeks.com/android/core/activity/android-start-service-boot-example/ 此示例说明如何在启动时启动服务,将警报保存到数据库中,并让启动服务 运行 通过所有已保存的警报,以便在每次启动时重新创建它们。