Android 如何从通知打开的 activity 发送 message/object 到 activity

Android how to send message/object to an activity from an activity that was opened from a notification

假设我有两个活动:

  1. MainActivity:显示存储在 SQLiteDB
  2. 中的项目列表
  3. 通知Activity:Activity 用户可以从中向数据库添加项目。

通知Activity 在用户单击通知时打开。接下来,用户向数据库添加一个项目并关闭 NotificationActivity。如何通知我的 MainActivity 添加了一个对象?

什么不起作用:

那么我如何从我的 NotificationActivity 发送一个 message/object 到我的 MainActivity 并从一个通知打开?

如果您要实现的目标是使用从通知 Activity 添加的新项目更新 Main Activity 中的 UI,并且您正在使用 Cursor Loaders 和 Content Provider你的活动检查 Cursor.setnotificationuri() 的概念 What is cursor.setNotificationUri() used for?

如果您在 ContentProvider 的查询 api 中启用 Cursor.setnotificationuri(),Content Provider 中更新、插入或删除期间的任何更改都会立即反映到 UI。

查看您与@Hulk 之间的评论交流,您有以下选择:

  1. 使用一个BroadcastReceiver。你说你需要取消注册接收者以防止"Activity has leaked IntentReceiver"。是的,您应该取消注册您的接收器,但您不需要在 onPause() 中执行此操作。当你的 Activity 被摧毁时,你可以在 onDestroy() 中进行。当您的 Activity 还活着时,BroadcastReceiver 可以保持活跃收听。这里没有内存泄漏。

  2. 使用 static(全局)变量,当 NotificationActivity 对数据进行更改时,该变量设置为 true。在 MainActivity.onResume() 中,您可以检查此变量并相应地更新 UI。