我是Android的新手,在我的一个课程中学习优秀的设计模式。我正在开发一个应用程序作为我的项目的一部分,但我遇到了一些设计问题,并试图找出一个好的模式,以遵循。
我有以下课程
public class Playlist {
ArrayList<Song> songs = new ArrayList<Song>();
//..getters and setters and song to list
}
public class Song {
private String name;
private String artist;
private String File;
//Getters and setters
}
在整个应用程序中,我将拥有所有已创建播放列表的ArrayList 所有可用歌曲的ArrayList。
应用程序最终将下载一个JSON对象并为该对象创建一个Song类的实例。
我一直在研究通过所有活动保持播放列表对象列表和歌曲对象列表,我找到了以下解决方案:
制作一个Gson并将其保存到sharedPref文件(这似乎不是一个好主意,因为我会不断保存和写作。)
我还读过有关使用sqllite的内容。但是我没有看到它的重点,因为我将把大多数歌曲作为JSON对象并用该对象制作一个歌曲实例。
我将播放列表实现为parceable,以便能够通过意图传递列表,但这似乎不是最好的方法,因为每次有更改时我都必须更新共享的pref。
任何人都可以向我指出正确的方向,或者如果为列表制作单例似乎是最有效的方式。 (全局单身,所以android不会破坏对象onDestroy())
由于
答案 0 :(得分:0)
Parcelable
是个好主意。使用my_object
,实现Parcelable
的类的对象:
要在活动之间传递,只需使用
即可Intent intent = new Intent(ActivityA, ActivityB);
intent.putExtra("MY_OBJECT", my_object);
...
另外,使用此选项可使您的类具有可分辨性: http://www.parcelabler.com/
答案 1 :(得分:0)
有效吗?
当用户对其播放列表进行更改时,您的用例要求您传递一个非常小的对象的几个实例。
简而言之,没有明显的理由说明为什么需要以最节省CPU的方式来完成。 (至少,这是我的意见。)
要考虑的另一个效率是开发人员效率;即你花在设计,实施,测试,调整,维护这一特定功能上的时间。
FWIW,我认为首选项或SQLlite数据库会更好,因为它们也可以用来保存播放列表。
答案 2 :(得分:0)