我有两个活动:
当用户点击通知时,会打开NotificationActivity。接下来,用户将一个项添加到数据库,并关闭NotificationActivity。如何通知我的MainActivity已添加对象?
什么不起作用:
我无法使用broadcastreiceiver,因为当活动暂停时会取消注册,当我的NotificationActivity打开时会发生这种情况。
我无法使用startActivityForResult
,因为NotificationActivity会从通知中打开。
我无法使用MainActivity onResume
,因为每次恢复MainActivity时我都不会更新列表。
那么如何从通知中打开的NotificationActivity向我的MainActivity发送消息/对象?
答案 0 :(得分:1)
如果您要实现的目的是使用从通知活动添加的新项目更新主活动中的UI,并且您在活动中使用光标加载器和内容提供程序,请检查Cursor.setnotificationuri()的概念 What is cursor.setNotificationUri() used for?
如果在ContentProvider中的查询api中启用Cursor.setnotificationuri(),则Content Provider中更新,插入或删除期间的任何更改都会立即反映到UI中。
答案 1 :(得分:1)
查看您与@Hulk之间的评论交流,您有以下选择:
使用BroadcastReceiver
。你说你需要取消注册接收器以防止" Activity泄露了IntentReceiver"。是的,您应取消注册您的接收器,但您不需要在onPause()
中执行此操作。当onDestroy()
被销毁时,您可以在Activity
内执行此操作。 BroadcastReceiver
活着的时候,Activity
可以保持主动收听状态。这里没有内存泄漏。
使用static
(全局)变量,当true
对数据进行更改时,该变量设置为NotificationActivity
。在MainActivity.onResume()
中,您可以检查此变量并相应地更新UI。