我必须开发一个应用程序,在用户设置的特定时间提供弹出消息。
我将使用启动服务的 android AlarmManager,该服务将启动包含带有确定按钮的弹出界面的 Activity 。
我想将数据传递给该 Activity ,如何实现(否则我将不得不查询数据库)?
- 如何在使用 AlarmManager 设置开始时间的同时将数据从 Activity 传递到服务?
- 稍后如何将该数据传递给服务启动的 Activity ?
此外,如果服务在我的应用程序中启动一个 Activity (不是主要 Activity ),并且数据库处理函数位于单独的类中,数据库是否可访问?
最佳答案
当您将 PendingIntent 对象传递给 AlarmManager.set 方法时,您可以将任何您想要的额外内容放入包含在待定 Intent 中的 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....
然后,随着服务启动,您会收到相同的 Intent 对象:
public void onStartCommand(Intent data, int startId, int flags) {
int data1 = data.getExtra("someKey");
}
从您的服务启动 Activity 时,您也可以这样做:
Intent activityIntent = new Intent(getApplicationContext(), YourActivity.class);
intent.putExtra("key", data1);
事实上,如果您在服务中除了启动 Activity 之外没有做任何特别的事情,为什么不直接在警报中为 Activity 设置一个 Intent?
关于android - 如何将数据传递给服务启动的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8010710/