我想在3个活动之间共享一个对象(具有多个状态),任何活动都可以修改对象状态,并且所有3个活动都应该可以访问同一个状态。 我不想使用单例对象,因为它将存在于整个应用程序中。 共享对象应该一直存在,直到这3个活动出现时为止。Objet共享多重活动
0
A
回答
0
hi @rahul你可以在你的对象中实现parcelable,并通过Intent将它传递给所有活动。这样你就可以维护状态以及避免单例。
由于制作对象parcelable涉及更多样板代码,因此您可以使用此库,该库不需要样板代码。 制作一个对象后parcelable您可以通过意向传递到任何活动,这样
Intent intent = new Intent(this, MyActivity.class);
intent.putParcelable("key", object_you_want_to_pass);
...
startActivity(intent);
0
如果你的对象可以被序列化,也许你可以尝试使用SharedPreferences
来存储您的特定对象,利用所描述的方法之一here。然后您可以解析它并从任何活动修改它。
如果你希望它只在你所有的三个活动都在运行的时候才是持久的,那么只需清除你的SharedPreferences项即可。
0
在一般的设计你的应用程序时,你应该避免在可能的时候创建这样的共享状态。但如果你真的需要它 - 见下文。
你可以创建一种“引用计数”的单 - 如果你想限制其可见性你可以把它包专用例如(如果你的活动是在同一个包)Self releasing (reference counting) singelton
。
但是这整个事情看起来有点过于复杂,我可能会去与正常的单身人士或您的应用程序类中的字段,也许手动删除它,如果我知道在某个时候不再需要它。
相关问题
- 1. 共享活动
- 2. 共享两款Android活动
- 3. asynctask活动之间共享
- 4. ActivityStream.ms /活动流和“共享”动词
- 5. 在活动之间共享域对象
- 6. 共享(静态)类与C#的活动
- 7. 在活动之间共享菜单栏
- 8. Android的学生共享活动问题
- 9. ActionBar - 活动之间的共享按钮
- 10. 共享不同的活动类型
- 11. 在活动之间共享DBAdapter
- 12. 共享首选项登录活动
- 13. 如何创建照片共享活动?
- 14. Android - 活动之间的共享网络
- 15. 在活动之间共享ArrayList
- 16. 自定义活动共享转换
- 17. 在活动之间共享WebView
- 18. 如何在活动中共享变量?
- 19. 如何通过SQLite共享多个活动中的数据?
- 20. Android - 在多个活动之间共享RecyclerView + Adpater
- 21. 共享htaccess:重定向多个域根
- 22. 如何共享并保存ImageView从第一活动到第三活动
- 23. 活动之间共享,第一类扩展活动,但其他不需要
- 24. 共享的Perferences检查值并重定向到下一个活动
- 25. Tensorflow RNN细胞重共享
- 26. 重定向到Facebook共享?
- 27. Tensorflow seq2seq权重共享
- 28. 共享点重新注册
- 29. Android视图的ID可以在多个活动中安全共享吗?
- 30. GetStream-IO将没有foreignId的活动添加到多个提要,但这些活动共享相同的Id
如果您希望作为任何对象,并且它不会持续整个应用程序,您可以将singelton对象设置为null。另一个答案是使用观察者模式或EventBus库来发送和接收来自其他活动或片段的信息。 – Thracian
感谢您的回答。你能告诉我观察者模式在这里会有帮助吗? – Rahul
EventBus是一个使用Observer模式的库。您可以搜索EventBus Observer模式,您将获得大量文章或示例。您可以通过在每个活动上实现接口(侦听器回调)并通过Application类(名称注册(MyCallback回调))将这些活动添加到侦听器列表来实现观察者模式。是的,它应该是听者名单或观察者不应为空的Applcation。 onStart添加(注册)一个活动列表和onPause删除(注销)一个活动。如果您知道观察者模式,那么这是一种普遍使用的模式,因为您可能知道这一点。 – Thracian