我是一个程序员初学者(或多或少),我想知道什么是最好的方式加载资源(bmps,mp3s等)在安卓或java一般。我的意思是,我创建了一个类,它将包含其他静态类,这些类将保存我的资源(所以我在使用它们时不需要传递参数,资源可以轻松地加载和卸载,就像加载一样容易)。就像这样。
public class ResourcesHandler {
public static Context mContext;
public static GraphicsCollection mGraphics;
public static SoundFxPlayer mSoundFx;
public static MusicPlayer mMusic;
public static void unload() {
mContext=null;
mGraphics.unload();
mSoundFx.unload();
mMusic.unload();
}
}这听起来可能是个愚蠢的问题,但我问这个问题主要是因为我从来没有从别人那里看到过这样的事情。我只看到资源来回传递,或者它们被加载到需要使用的地方。你认为如何?什么是最佳做法?
发布于 2014-10-01 08:37:26
要完成这一任务,最好的方法是使用Singleton模式,因为在整个应用程序生命周期中,您将一直需要资源。创建Singleton类如下所示:
静态成员:这包含单例类的实例。
私有构造函数:这将阻止其他任何人实例化Singleton类。
静态公共方法:这提供了对Singleton对象的全局访问点,并将实例返回给客户端调用类。
如果在您的情况下存在多线程环境,也要注意它。
public class ResourcesHandler {
private static ResourcesHandler handlerObj;
private Context mContext;
private GraphicsCollection mGraphics;
private SoundFxPlayer mSoundFx;
private MusicPlayer mMusic;
private ResourcesHandler(){
//TODO
}
public static ResourcesHandler getInstance() {
if (handlerObj == null){
handlerObj = new ResourcesHandler();
}
return handlerObj;
}
public void unload(){
mContext=null;
if(null != mGraphics){
mGraphics.unload();
}
if(null != mSoundFx){
mSoundFx.unload();
}
if(null != mMusic){
mMusic.unload();
}
}
}发布于 2014-10-01 08:39:54
一般来说,在java中,您的方法看起来足够好,尽管这在很大程度上取决于您正在使用的程序和资源类型。
然而,在android系统中,我不相信您的方法。原因是在android中,资源已经被隔离到了资源目录中。而资源初始化则有很大不同。此外,活动的流动也将使使用这一方法变得困难。
https://stackoverflow.com/questions/26137133
复制相似问题