android - 如何将数据传递给服务启动的 Activity

标签 android android-activity android-service android-alarms

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

我将使用启动服务的 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/

相关文章:

android - data.getExtras().get ("data") android 中低分辨率图像的结果

android - 如果子 Activity 调用父 Activity ,是否会打开一个新实例?

Android 运行时异常 : Unable to instantiate the service

Android:从服务访问单选按钮值

android - 删除 SD 卡上的文件夹

java - 基于限定符的 Android 可绘制对象处理

android - 在android中没有任何参数的改造Post方法

android - 如何使用具有三种布局的 View 翻转器?

android - 如何通过单击通知恢复之前的 Activity

android - 通知点击显示当前 Activity ,如果应用程序关闭启动新 Activity