弱い参照を持つ私のシングルトンクラスです。弱い参照を持つJavaシングルトン
public class HandheldMapViewProvider {
private static WeakReference<HandheldMapViewProvider> mInstance = null;
private HandheldMapViewProvider(){
}
public static synchronized WeakReference<HandheldMapViewProvider> getInstance(){
if(mInstance == null){
mInstance = new WeakReference<HandheldMapViewProvider>(new HandheldMapViewProvider());
}
return mInstance;
}
public void onprint(String data){
Log.D("TAG",data)
}
}
上記のクラスの使用は次のとおりです。
private WeakReference<HandheldMapViewProvider> hereMapViewProvider;
public void onprint(){
hereMapViewProvider = HandheldMapViewProvider.getInstance();
hereMapViewProvider.get().onprint("somevalue");
}
方法初めてアプリが時々()取得によるクラッシュを取得onprint呼び出している間はnullです。
私はそれが間違っています。それはずっと起こっていない。
解決策は次のとおりです。
public static synchronized HandheldMapViewProvider getInstance(){
HandheldMapViewProvider mapProvider = mInstance == null ? null :mInstance.get();
if(mapProvider == null){
mInstance = new WeakReference<HandheldMapViewProvider>(mapProvider =new HandheldMapViewProvider());
}
return mapProvider;
}
あなたの主な不具合は、最初にシングルトンパターンを起こしています。 https://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons –
どこからコードの最後の部分を呼び出しますか? –
アクティビティから@EnamulHaque。ほとんど同じコードが完璧に動作しています。私はいつかnullになっています。 –