我想在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. 共享数据从/到活动
- 7. 自定义活动共享转换
- 8. 共享(静态)类与C#的活动
- 9. Android - 活动之间的共享网络
- 10. ActionBar - 活动之间的共享按钮
- 11. 在活动之间共享域对象
- 12. 如何创建照片共享活动?
- 13. 共享首选项登录活动
- 14. 在活动之间共享WebView
- 15. 活动之间的共享首选项
- 16. 在活动之间共享DBAdapter
- 17. 在活动之间共享菜单栏
- 18. 活动共享加载的图像
- 19. Android的学生共享活动问题
- 20. 共享不同的活动类型
- 21. ListView和活动共享数据
- 22. 在两项活动中共享变量?
- 23. 在活动之间共享ArrayList
- 24. Android的共享偏好悫活动
- 25. 如何在活动中共享变量?
- 26. Android多种活动的共享首选项
- 27. 如何通过SQLite共享多个活动中的数据?
- 28. 如何在多个活动之间共享数据?
- 29. 多个活动声明可以共享相同的类名吗?
- 30. 如何在多个活动之间共享相同的数据
如果您希望作为任何对象,并且它不会持续整个应用程序,您可以将singelton对象设置为null。另一个答案是使用观察者模式或EventBus库来发送和接收来自其他活动或片段的信息。 – Thracian
感谢您的回答。你能告诉我观察者模式在这里会有帮助吗? – Rahul
EventBus是一个使用Observer模式的库。您可以搜索EventBus Observer模式,您将获得大量文章或示例。您可以通过在每个活动上实现接口(侦听器回调)并通过Application类(名称注册(MyCallback回调))将这些活动添加到侦听器列表来实现观察者模式。是的,它应该是听者名单或观察者不应为空的Applcation。 onStart添加(注册)一个活动列表和onPause删除(注销)一个活动。如果您知道观察者模式,那么这是一种普遍使用的模式,因为您可能知道这一点。 – Thracian