我是rxJava和Retrofit2的新手,但我似乎无法弄清楚如何实现理想的情况:
JSON数组包含数百个'我希望缓存(Singleton),所以我不必为应用程序中的每个更改调用。
接口(myAPI)
/**
* RxJava testing endpoint
* @return Observable list of Places
* count = 0 means everything
*/
@GET("place/search?count=0")
rx.Observable<List<Place>> loadPlacesRx();
的Singleton
...
private static PlaceSingleton ourInstance = new PlaceSingleton();
private static RxJavaCallAdapterFactory rxAdapter =
RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io());
private static Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(JacksonConverterFactory.create())
.addCallAdapterFactory(rxAdapter)
.baseUrl(myAPI.BASE_URL)
.build();
// Prepare call in Retrofit2
private static MyAPI myAPI = retrofit.create(MyAPI.class);
/**
* This method should handle the steps mentioned above
*/
public void getAllPlaces() {
poiList = myAPI.loadPlacesRx()
.map(Place -> ...
...
答案 0 :(得分:0)
您可以使用Gson将自己的缓存序列化对象保存到字符串中,并将其保存到共享首选项。
使用Gson: 序列化:
new Gson().toJson(yourObject);
并且反序列化:
new Gson().fromJson(stringObject);
使用Jakson:
要序列化:
ObjectMapper mapper = new ObjectMapper();
String objectString = mapper.writeValueAsString(object);
要反序列化:
ObjectMapper mapper = new ObjectMapper();
Object object = mapper.readValue(jsonInString, Object.class);