Application のサブクラスにシングルトン アプローチを使用します。私は以下を使用します:
public class MyApplication extends Application {
private static MyApplication instance;
public MyApplication() {
instance = this;
}
public static MyApplication getInstance() {
if (instance == null) {
synchronized (MyApplication.class) {
if (instance == null)
new MyApplication();
}
}
return instance;
}
...
...
私の質問は次のとおりです。インスタンスが一度割り当てられた場合、システムによるクラス作成者への最初の呼び出し中に、インスタンスが後で null になることはありません! そのため、if (instance == null)
insidegetInstance()
は決して true を返しません。それとも私が間違っていますか?
編集:
ウィキペディアにあるコードを修正します。
public class volatile MyApplication extends Application {
private static MyApplication instance;
public MyApplication() {
}
public static MyApplication getInstance() {
if (instance == null) {
synchronized (MyApplication.class) {
if (instance == null)
instance = new MyApplication();
}
}
return instance;
}
...
...
追加されvolatile
、instance = new MyApplication();
それは正しいですか? 私の疑問はまだ残っています...