Sick of Android ContentProvider & SQLite database nonsense? This might be your next favorite library. An object oriented observable storage. Simpler than counting to potato.
The following code snippet covers basics of this library. For more see sample apps.
// Let's say we need to store Tweet objects, first
// we need to extend Storage
class TweetStorage extends Storage<Tweet> {
// ...override these 2 methods
@Override
public String id(Tweet tweet) {
return tweet.id;
}
@Override
public Class<Tweet> classname() {
return Tweet.class;
}
// ...and have some sort of singleton for the storage
private TweetStorage(Context context) {
super(context);
}
private static TweetStorage sInstance = null;
public static TweetStorage getInstance(){
if (sInstance == null) {
sInstance = new TweetStorage(context);
sInstance.init();
}
return sInstance;
}
} // that's it!
// ... now somewhere in your code you can do things like this:
TweetStorage.List homeTimeline = TweetStorage.obtainList("home_timeline");
homeTimeline.subscribe(new Subscription() {
@Override
public void onUpdate(Action action) {
// ...OMG MOAR TWEETS
// add code here to update UI
}
});
// somewhere else in the code you can call something like this
// it will populate ADD_ALL action to your subscribers
homeTimeline.addAll(newTweetsIFetchedFromTheInternet);
There's more to the potato! You can override standard persistence layer (KryoTransportLayer
) and have all of your items stored in a SQLite database. See SQLiteTransportLayer
You can either check out the repo manually or grab a snapshot aar
which is hosted on sonatype repo. To do so, include this in your build.gradle file:
dependencies {
repositories {
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
mavenCentral()
mavenLocal()
}
compile 'com.eyeem.potato:library:0.9.2.5-SNAPSHOT@aar'
// ...other dependencies
}
- Lukasz Wisniewski
- Tobias Heine
Copyright 2012-2015 EyeEm Mobile GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.