0

您好,感谢您的帮助。

这是我的场景。

我需要通过 AlarmManager 安排警报。

警报的调度需要同时发生

  1. 应用程序运行时
  2. 以及手机开机时。在这种情况下,我通过 BOOT 接收器启动服务。

现在,在展位案例中,我需要调用某个类的方法来传递我想要安排的事件。

认为

  • 该方法将我创建的 Event 对象作为输入
  • 该方法需要由正在运行的活动或服务调用,具体取决于情况

我的问题是:我需要创建什么样的对象(包含上述方法)?

一个活动?不这么认为……

服务?不这么认为

请问我可以用什么?

4

1 回答 1

2

我已经实现了类似的东西。在我的应用程序中 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);
        }

    }
于 2013-09-27T21:23:34.460 回答