2017-05-28 71 views
0

我想將從翻新服務接收到的數據映射到單例類。看起來好像是因爲getInstance()靜態方法在調用映射json到我的對象時不被調用,INSTANCE變量沒有被初始化,並且下一次我調用MyClass.getInstance()我得到的對象具有默認值,而不是我從改造中得到的東西。我如何着手將改造後的數據保存到單例類中。改造JSON映射到單例類

P.S.我需要這個,因爲我需要使用我在第一個片段的模型中收到的同一個對象,在ViewPager的第二個片段中。

我的單例類:

public final MySingletonClass { 

    //pirivate final fields; 

    private MySingletonClass() { 
     //default initialization fields 
    } 


    public static MySingletonClass getInstance() { 
     return MySingletonClassSingletonHelper.INSTANCE; 
    } 

    private static class MySingletonClassSingletonHelper { 
     private static final MySingletonClass INSTANCE = new MySingletonClass(); 
    } 

    //getters 

} 

OK,如果有人需要知道如何使用改裝:

@Override 
public Observable<MySingletonClass> loadData(Integer params) { 
    return mRetrofitInterface.getMySingletonClass(params).subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()); 
} 


public interface MySingletonClassService { 
@POST("some address") 
Observable<MySingletonClass> getMySingletonClass(@Path("idd") Integer idd); 
} 
+0

你希望自己的數據,通過您的應用程序或多個運行僅通過一個運行持續? – Sac

+0

只需一次運行。直到下一個請求到相同的地址(刷新)。 – Sermilion

回答

1

我不認爲這是最好的選擇,但你可以做到這一點:

public final MySingletonClass { 

    //private final fields; 

    private MyRetrofitObject foo; 

    private MySingletonClass() { 
     //default initialization fields 
    } 


    public static MySingletonClass getInstance() { 
     return MySingletonClassSingletonHelper.INSTANCE; 
    } 

    private static class MySingletonClassSingletonHelper { 
     private static final MySingletonClass INSTANCE = new MySingletonClass(); 
    } 

    //getters 

    public void setObject(MyRetrofitObject foo) { 
     this.foo = foo; 
    } 

} 

當您從Retrofit返回對象時,您將它設置在您的單例中。

INSTANCE.setObject(fooFromRetrofit); 

這種分離的對象解析,從存儲器

+0

這就是我的想法,但希望改造本身可以處理單身映射。我想這是一樣好。 – Sermilion

+1

老實說,這比你想象的要好https://en.wikipedia.org/wiki/Single_responsibility_principle – Blundell

+0

你的意思是有獨立的對象表示接收到的數據和代表對象的對象,該對象用作該對象的單例對象嗎?我可以看到,我可能需要修改我用作單例的對象,這不會影響我的對象來表示接收的數據。我理解正確嗎? – Sermilion