我在我的 Android 应用程序中扩展了我的应用程序,以便存储我在应用程序中使用的不同字体。一切正常,但是我不理解代码的单例部分以及 getInstance 的目标是什么(我在那里设置了一个断点并且它从未被调用,如果我更改方法的名称,应用程序也可以正常工作出色地)。有人可以告诉我这种模式吗?我通常不使用 OOP,所以这可能是一个愚蠢的问题。
我的应用程序.java
public class MyApplication extends Application {
private Typeface _typefaceNormal;
private Typeface _typefaceBold;
private static MyApplication singleton;
public MyApplication getInstance() {
return singleton;
}
@Override
public void onCreate() {
super.onCreate();
singleton = this;
this._typefaceNormal = Typeface.createFromAsset(getAssets(),"PTS55F.TTF");
this._typefaceBold = Typeface.createFromAsset(getAssets(), "PTS75F.TTF");
}
public Typeface getNormalFont() {
return this._typefaceNormal;
// return this._typefaceNormal;
}
public Typeface getBoldFont() {
return this._typefaceBold;
// return this._typefaceBold;
}
}
然后我这样打电话:
this._typeface = ((MyApplication) _activity.getApplicationContext()).getNormalFont();
编辑
根据我收集的答案和一些额外的研究,这是我最终使用的课程:
public class MyGlobalConfig {
private static MyGlobalConfig singleton;
private Typeface _typefaceNormal;
private Typeface _typefaceBold;
private MyGlobalConfig() {
}
public static MyGlobalConfig getInstance() {
if (singleton == null) {
singleton = new MyGlobalConfig();
}
return singleton;
}
public void init(Context ctx, String typefaceNormal, String typefaceBold) {
this._typefaceNormal = Typeface.createFromAsset(ctx.getAssets(),
typefaceNormal);
this._typefaceBold = Typeface.createFromAsset(ctx.getAssets(),
typefaceBold);
}
public Typeface getNormalFont() {
return this._typefaceNormal;
// return this._typefaceNormal;
}
public Typeface getBoldFont() {
return this._typefaceBold;
// return this._typefaceBold;
}
}
我将其初始化为:
MyGlobalConfig.getInstance().init(getApplicationContext(), normalFont, boldFont);
并将我的字体设置为:
MyGlobalConfig.getInstance().getNormalFont();