您好,感谢您的帮助。
这是我的场景。
我需要通过 AlarmManager 安排警报。
警报的调度需要同时发生
- 应用程序运行时
- 以及手机开机时。在这种情况下,我通过 BOOT 接收器启动服务。
现在,在展位案例中,我需要调用某个类的方法来传递我想要安排的事件。
认为
- 该方法将我创建的 Event 对象作为输入
- 该方法需要由正在运行的活动或服务调用,具体取决于情况
我的问题是:我需要创建什么样的对象(包含上述方法)?
一个活动?不这么认为……
服务?不这么认为
请问我可以用什么?
您好,感谢您的帮助。
这是我的场景。
我需要通过 AlarmManager 安排警报。
警报的调度需要同时发生
现在,在展位案例中,我需要调用某个类的方法来传递我想要安排的事件。
认为
我的问题是:我需要创建什么样的对象(包含上述方法)?
一个活动?不这么认为……
服务?不这么认为
请问我可以用什么?
我已经实现了类似的东西。在我的应用程序中 aBroadcastReceiver收到警报 (an Intent),然后开始传递一些参数的活动。
这是我的一段代码。让它成为关于传递和接收参数的部分
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context c, Intent i) {
int answerType = i.getExtras().getInt("answerType");
Intent intent = new Intent(arg0, ReminderActivity.class);
intent.putExtra("id", i.getExtras().getInt("id"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
c.startActivity(intent);
}
}
我编写了一个名为 ReminderManger 的类,其中包含一个设置警报的方法。像这样的东西:
public void setAlarm(Notification n){
Intent intent = new Intent(reminderContext, AlarmReceiver.class);
intent.putExtra("id",n.ID);
intent.putExtra("answerType",n.AnswerType);
int execTimeInt = Integer.parseInt(n.ExecutionTimespan);
long execTime = (long)execTimeInt;
execTime = execTime*1000;
PendingIntent pendingIntent = PendingIntent.getBroadcast(reminderContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
currentPendingIntent = pendingIntent;
AlarmManager alarmManager = (AlarmManager)reminderContext.getSystemService(reminderContext.ALARM_SERVICE);
currentAlarm = alarmManager;
if(execTime < System.currentTimeMillis() && System.currentTimeMillis() - execTime < NOTIFICATION_THRESHOLD)
{
alarmRunning = true;
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+EXECUTION_DELAY,pendingIntent);
}
}