In my app I am using retrofit 2 as a networking library an NodeJS-MongoDB as a backend service.I want to cache the server response for 2 days so that data data should be cached once it retrieved from the server and user can see cached data.
This is what I have done so far I have successfully retrieved data from the server.
RetrofitClient.java
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getInstance(){
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(22,TimeUnit.SECONDS)
            .readTimeout(22, TimeUnit.SECONDS)
            .connectTimeout(22, TimeUnit.SECONDS)
            .build();
    if(retrofit == null)
        retrofit = new Retrofit.Builder()
                .baseUrl("https://example.com/")
                .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(okHttpClient)
                .build();
    return retrofit;
}
private RetrofitClient(){
}
}
ApiService.java
public interface ApiService {
@GET("getUsers")
Observable<List<BioData>> getData();
}
MainActivity.java
public class Users extends AppCompatActivity {
RecyclerView recycle;
UserAdapter adapter;
List<BioData> list;
CompositeDisposable compositeDisposable;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recycle = findViewById(R.id.recycle);
    recycle.setHasFixedSize(true);
    recycle.setLayoutManager(new LinearLayoutManager(this));
    list  = new ArrayList<>();
    compositeDisposable = new CompositeDisposable();
    fetchData();
}
    private void fetchData(){
    Retrofit retrofit  = RetrofitClient.getInstance();
    ApiService myApi = retrofit.create(ApiService.class);
    Disposable disposable = myApi.getData().subscribeOn(Schedulers.io())
                                           .observeOn(AndroidSchedulers.mainThread())
                                           .subscribe(new Consumer<List<BioData>>() {
                                               @Override
                                               public void accept(List<BioData> bioData) throws Exception {
                                             adapter = new UserAdapter(bioData,getApplicationContext());
                                                   recycle.setAdapter(adapter);
                                               }
                                           });
    compositeDisposable.add(disposable);
}
@Override
protected void onStop() {
    super.onStop();
   compositeDisposable.clear();
  }
}
Someone please let me know how can I cache server response any help would be appreciated.
THANKS
