Android - 从 startActivity 获取活动对象
Posted
技术标签:
【中文标题】Android - 从 startActivity 获取活动对象【英文标题】:Android - Getting activity object from startActivity 【发布时间】:2013-09-23 20:46:57 【问题描述】:我需要获取在调用startActivity()
时创建的Activity
的实例。但是,startActivity()
返回一个 void 值。
我猜startActivity()
不会等到Activity
被创建。
我有没有其他方法可以获取刚刚在调用startActivity
时创建的activity
?或者,也许我可以自己创建一个Activity
实例并将其注册到某个地方,以便startActivity
可以找到它。
【问题讨论】:
看看这个***.com/questions/449484/… 请注意,当您开始第二个活动时,您的第一个活动将暂停。 也许如果你解释你为什么需要这个,可能还有其他方法可以解决你的问题。另外,如上所述,您的第一个活动将处于暂停/停止状态(代码通常不应在这些状态下运行) 这听起来像是一个肮脏的hack,以规避android系统架构的正常运行。您的问题强烈暗示您的应用程序的架构从根本上被破坏了。 【参考方案1】:您要查看的 Activity 是在您自己的应用中还是在其他应用中?
如果它们都是你的活动,那么你可以做你想做的事情,尽管活动应该保持分开。您可以考虑改用 Fragment,因为它们可以通过其父 Activity 相互“交流”。
如果它们不在您的应用程序中,则您无法获取另一个 Activity 实例,因为根据定义它位于另一个进程中。此外,Android 系统会阻止它,因为这将是一个很大的安全漏洞。
一般来说,我在尝试获取您自己的组件之外的某物的实例时会稍微眯起眼睛,除非它是系统中某物的实例。组件之间的通信应该通过 Intent、绑定的服务特性或内容 URI。传递实例会使您容易发生内存泄漏。
【讨论】:
以上是关于Android - 从 startActivity 获取活动对象的主要内容,如果未能解决你的问题,请参考以下文章
Android 小知识:startActivity 与 finish 的调用顺序
Android 小知识:startActivity 与 finish 的调用顺序
Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同
Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同
权限拒绝:startActivity 要求以用户 -2 的身份运行,但从用户 0 调用;这需要 android.permission.INTERACT_ACROSS_USERS_FULL