1

我必须开发一个应用程序,在用户设置的特定时间给出弹出消息。

我将使用 android AlarmManager,它启动一个服务,该服务将启动包含带有 OK 按钮的弹出界面的活动。

我想将数据传递给该活动,如何做到这一点(否则我将不得不查询数据库)?

  • 如何在使用 AlarmManager 设置开始时间时将数据从活动传递到服务?
  • 以后如何将该数据传递给服务启动的活动?

此外,如果服务在我的应用程序中启动一个活动(不是主要活动),并且数据库处理程序函数位于一个单独的类中,那么数据库是否可以访问?

4

1 回答 1

3

当您将 PendingIntent 对象传递给 AlarmManager.set 方法时,您可以将任何您想要的额外内容放入包裹在待处理意图中的 Intent 对象中。例如:

Intent intent = new Intent(getApplicationContext(), YourService.class);
intent.putExtra("someKey", someData);
intent.putExtra("anotherKey", anotherData);
PendingIntent pi = PendingIntent.getService(getApplicationContext(), REQUEST_CODE, intent, FLAGS);
alarmManager.set....

然后,当服务启动时,您会收到相同的意图对象:

public void onStartCommand(Intent data, int startId, int flags) {
    int data1 = data.getExtra("someKey");
}

从您的服务启动活动时,您也可以这样做:

Intent activityIntent = new Intent(getApplicationContext(), YourActivity.class);
intent.putExtra("key", data1);

事实上,如果你在你的服务中没有做任何特别的事情,只是启动了活动,你为什么不在你的警报中为活动设置一个意图呢?

于 2011-11-04T14:51:56.107 回答