Android 如何将调用活动的上下文传递给被调用的活动?

Android 如何将调用活动的上下文传递给被调用的活动?,android,android-recyclerview,android-context,Android,Android Recyclerview,Android Context,大家好,实际上我有一个活动,我正在使用recyclerview显示所有电影列表,其中有一个按钮可以向上投票给每个电影项目的电影,现在当用户单击任何电影项目时,我打开detailsactivity,我在其中显示用户单击的电影的详细信息,这个detailsactivity也有一个按钮向上投票给这部电影。现在我面临的问题是,假设用户没有在recyclerview列表中对电影进行投票,而是进入详细活动,然后他现在在那里对电影进行投票,当他按下后退按钮时,我必须在我的recyclerview中显示这部电影

大家好,实际上我有一个活动,我正在使用recyclerview显示所有电影列表,其中有一个按钮可以向上投票给每个电影项目的电影,现在当用户单击任何电影项目时,我打开detailsactivity,我在其中显示用户单击的电影的详细信息,这个detailsactivity也有一个按钮向上投票给这部电影。现在我面临的问题是,假设用户没有在recyclerview列表中对电影进行投票,而是进入详细活动,然后他现在在那里对电影进行投票,当他按下后退按钮时,我必须在我的recyclerview中显示这部电影

现在我可以用两种方法解决我的问题

使用onActivityResult 但是这个方法会显示一些延迟,因为现在在调用方活动中单击后退按钮时,我需要调用recyclerview适配器的notifyitemchanged,这需要一些时间。将近500秒

在我的应用程序类中存储上下文 到目前为止,这件事对我来说还不错,在这方面没有滞后

但我读了一篇关于SO的帖子,其中一个用户写道不保存活动的上下文,因为活动可能会被破坏。我的整个应用程序都处于纵向模式,所以我不认为有太多机会意外破坏我的上下文

所以你们中的任何一个人都可以告诉我,我的第二种方法是对的还是错的。这对我真的很有帮助

多谢各位

如何将调用活动的上下文传递给被调用的活动

你不能

现在我可以用两种方法解决我的问题

还有更多的方法,例如:

当用户对电影进行升级投票时,使用事件总线,例如greenrobot的事件总线、LocalBroadcastManager、基于RxJava/RxAndroid的总线,让其他相关方了解升级投票。例如,保存upvote状态的后台线程可能会在状态被持久化后引发事件

让RecyclerView的活动意识到嘿,我为Movie X启动了一个详细活动,现在回到前台,让我们根据我们的数据模型缓存更新Movie X的up vote状态,因为它可能已更改,并在onResume中执行该操作

既然你写的不是数据,因为如果我愿意,我可以将其存储在共享首选项中,尽管SharedReferences是一种奇怪的数据存储选择,但你可以在SharedReferences上使用RecyclerView调用RegisterOnSharedReferenceChangeListener的活动,了解向上投票状态何时更改

将数据存储包装在ContentProvider中,并在带有RecyclerView的活动中使用ContentObserver,以查看数据何时更改

使用onActivityResult,但此方法会显示一些延迟,因为现在在调用方活动中单击“上一步”按钮时,我需要调用recyclerview适配器的notifyitemchanged,这需要一些时间。将近500秒

根据定义,任何解决方案都将涉及更新RecyclerView。你需要确定这段时间是从哪里来的

我的整个应用程序都处于纵向模式,所以我不认为有太多机会意外破坏我的上下文

默认情况下,任何配置更改都会破坏它,而不仅仅是方向更改。此外,如果用户在详细信息活动处于前台时离开你的应用程序,那么当用户返回到你的应用程序时,如果同时终止了你的过程,你可能会遇到问题

所以你们中的任何一个人都可以告诉我,我的第二种方法是对的还是错的


通常不赞成这样做,例如内存泄漏的可能性增加。

尝试使用片段代替活动是的,我想是的,但我只是想知道如何正确使用活动来解决这个问题。你在哪里存储电影项目?在活动本身中。因此,当用户重新启动你的应用程序时,他不会看到他以前对某部电影投了更高的票吗?你能解释一下第二点吗??让RecyclerView的活动实现嘿,我为Movie X启动了一个详细活动,现在回到前台,让我们根据我们的数据模型缓存更新Movie X的向上投票状态,因为它可能已更改,你能告诉我一件事吗?rxjava在哪里比普通的广播接收机好?@PrakashKumar:rxjava在哪里比普通的广播接收机好这超出了这个答案的范围。你能解释一下第二点吗在某个地方,您有一个数据模型,包含电影、投票状态等。您的RecyclerView活动可以访问此数据模型。该活动还知道它在该数据模型中为某部电影启动了详细活动,并且如果用户更改了upvote状态,该详细活动将更新该数据模型。所以,在onResume中,只需获取该电影的upvote状态并更新其关联的RecyclerView项 我到处都在搜索我读的关于rxjava的文章都是出于被动的目的,但是没有人告诉我如何使用rxjava将事件从一个活动发送到另一个活动。你能告诉我如何使用rx做到这一点吗?如果你很忙,那么请建议我任何好的教程,这样我就可以使用rx做到这一点。