在我的android项目中,我有一个包含流地址列表(音乐)的类
我应该保留该课程,以便我不必重新填写该列表吗?
我可能会有许多不同的屏幕(活动)将它们推入屏幕或从屏幕拉回来。
在这些和屏幕更改(活动的破坏)之间,列表将丢失......
此逻辑是否需要服务来保存列表?
答案 0 :(得分:2)
您可以将列表存储在静态单例中,也可以存储在扩展Application
的类中。反过来可以使用getApplication()
从活动类访问。
如果使用正确,静态单例将以与应用程序类相同的方式运行,除了可以从任何地方访问单例,而Application类只能通过Context访问。
Here一个关于应用程序和单例之间区别的相关问题。
答案 1 :(得分:1)
不,你不需要这样做。
通常情况下,如果你有一个需要在整个Activity生命周期中存活的长时间运行的类,那么将它放在绑定服务中就行了。它需要您通过IPC传输数据。在这种情况下,它应该没关系。由于您基本上处理的是String
数组,因此您可以将其放在您即将开始的Intent
的{{1}}对象中,也可以放在Activity
中进入Bundle
对象。
在创建活动时,只需使用Intent
方法打开Bundle
并重建您的列表。与使用Intent#getExtras()
的IPC相比,它不会花费更长的时间,并且应该更容易维护。
编辑:
您可以尝试的一件事是覆盖Service
对象。您必须在Application
中指定新的入口点,但如果您从Manifest
类构建Singleton
并在那里保留引用,只要您的应用是运行。你离开时它会被摧毁。