我看到的唯一方法是使用static variable
,但这并不好,因为我希望能够启动多个Activites
。
在我的情况下,我想保留Dagger 2 Component
的引用。
它将提供Navigator
之类的对象。我不能将它存储到Bundle
。
目前,由于此bug,我无法使用Retain MainFragment
代替MainActivity
。(我处于23 API级别)
是否有任何保留活动实施?
答案 0 :(得分:1)
1)如果对象是可序列化的或可分区的,则可以覆盖onSaveInstanceState()并在onCreate中读取值。以下是google developer docs的详细信息。
2)如果您的对象不可序列化,您可以改写onRetainNonConfigurationInstance()并返回该对象。然后,您可以在onCreate中重新获取对象。请看这个SO post如何使用这种方法(不要坚持你的活动!坚持对象。)。这样做的缺点是您一次只能持久保存一个对象。
我有更深入地介绍这两种方法,第三种是声明式方法,你可以滚动。它依赖onRetainNonConfigurationInstance并允许您使用注释来声明活动中应该保留哪些变量。 check it out here。也就是说,除非你有多个不可序列化/可分割的对象要坚持,否则我不建议使用它。
编辑:澄清一点,你不应该使用onRetainNonConfigurationInstance()来保持你的整个活动。