Skip to content

Android library to easily serialize and cache your objects to disk using key/value pairs.

License

Notifications You must be signed in to change notification settings

synapticvoid/Reservoir

 
 

Repository files navigation

Reservoir

Reservoir is a simple library for Android that allows you to easily serialize and cache your objects to disk using key/value pairs.

Usage

Initialize

Reservoir uses the internal storage allocated to your app. Before you can do anything, you need to initialize Reservoir with the cache size.

try {
    Reservoir.init(this, 2048); //in bytes
} catch (Exception e) {
        //failure
}

The best place to do this would be in your application's onCreate() method.

Since this library depends directly on DiskLruCache, you can refer that project for more info on the maximum size you can allocate etc.

Put stuff

You can put objects into Reservoir synchronously or asynchronously.

Async put will you give you a callback on completion:

Reservoir.putAsync("myKey", myObject, new ReservoirPutCallback() {
            @Override
            public void onSuccess() {
                //success
            }

            @Override
            public void onFailure(Exception e) {
                //error
            }
        });

synchronous put:

try {
    Reservoir.put("myKey",myObject);
} catch (Exception e) {
    //failure;
}

Async put uses the standard AsyncTask provided by the Android framework.

Get Stuff

You can get stuff out of Reservoir synchronously or asynchronously as well.

Async get will give you a callback on completion:

Reservoir.getAsync("myKey", MyClass.class, new ReservoirGetCallback<MyClass>() {
            @Override
            public void onSuccess(MyClass myObject) {
                //success
            }

            @Override
            public void onFailure(Exception e) {
                //error
            }
        });

synchronous get:

try {
    Reservoir.get("myKey",MyClass.class);
} catch (Exception e) {
        //failure
}

Check for existence

If you wish to know whether an object exists for the given key, you can use:

try {
    boolean objectExists = Reservoir.contains("myKey");
} catch (Exception e) {}

Delete Stuff

deleting stuff can also be synchronous or asynchronous.

Async delete will give you a callback on completion:

Reservoir.deleteAsync("myKey", new ReservoirDeleteCallback() {
            @Override
            public void onSuccess(MyClass myObject) {
                //success
            }

            @Override
            public void onFailure(Exception e) {
                //error
            }
        });

synchronous delete:

try {
    Reservoir.delete("myKey");
} catch (Exception e) {
        //failure
}

Including in your project

You can directly download the jar and add it to your project. You will also need to add the jars on which Reservoir depends i.e. DiskLruCache, Apache Commons IO and GSON.

If you use Maven:

<dependency>
  <groupId>com.github.anupcowkur</groupId>
  <artifactId>reservoir</artifactId>
  <version>1.2</version>
</dependency>

or Gradle:

compile 'com.github.anupcowkur:reservoir:1.2'

FAQs

What kind of objects can I add to Reservoir?

Anything that GSON can serialize.

What happens if my cache size is exceeded?

Older objects will be removed in a LRU (Least Recently Used) order.

Can I use this a SharedPreferences replacement?

NO! This is a cache. You should store stuff in here that is good to have around, but you wouldn't mind if they were to be removed. SharedPreferences are meant to store user preferences which is not something you want to lose.

Sample

Check out the sample application for example of typical usage.

Contributing

Contributions welcome via Github pull requests.

Credits

Reservoir is just a tiny little convenience wrapper around the following fantastic projects:

Thanks, you guys!

License

This project is licensed under the MIT License. Please refer the License.txt file.

About

Android library to easily serialize and cache your objects to disk using key/value pairs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%