Android 如何将数据传递给由服务启动的活动

Android 如何将数据传递给由服务启动的活动,android,android-activity,android-service,android-alarms,Android,Android Activity,Android Service,Android Alarms,我必须开发一个应用程序,在用户设置的特定时间提供弹出消息 我将使用android AlarmManager,它启动一个服务,该服务将通过OK按钮启动包含弹出界面的活动 我想将数据传递给该活动,如何才能做到这一点(否则我将不得不查询数据库) 如何在使用AlarmManager设置启动时间时将数据从活动传递到服务 以后如何将该数据传递给服务启动的活动 另外,如果服务在我的应用程序中启动一个活动(不是主活动),并且数据库处理程序函数位于单独的类中,那么数据库是否可访问?当您将PendingEven

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

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

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

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

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

当您将PendingEvent对象传递给AlarmManager.set方法时,您可以在PendingIntent中包装的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);

事实上,如果您在服务中没有做任何特殊的事情,只是启动了活动,为什么不在闹钟中设置活动的意图呢?

谢谢,我不知道闹钟也可以启动活动!PendingIntent可以做任何正常意图可以做的事情,我几乎可以肯定这一点。