在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):pilgr/Paper开源软件地址(OpenSource Url):https://github.com/pilgr/Paper开源编程语言(OpenSource Language):Java 96.5%开源软件介绍(OpenSource Introduction):PaperPaper's aim is to provide a simple yet fast object storage option for Android. It allows to use Java/Kotlin classes as is: without annotations, factory methods, mandatory class extensions etc. Moreover adding or removing fields to data classes is no longer a pain – all data structure changes are handled automatically. Migration to Maven CentralLibrary has been moved to Maven Central since service ends for JCenter. Note that group id
has been changed to Add dependencyimplementation 'io.github.pilgr:paperdb:2.7.2' RxJava wrapper for Paper is available as a separate lib RxPaper2. Thanks @pakoito for it! Initialize PaperShould be initialized once in Paper.init(context); Threading
SaveSave any object, Map, List, HashMap etc. including all internal objects. Use your existing data classes as is. Note that key is used as file name to store the data and so cannot contain symbols like List<Person> contacts = ...
Paper.book().write("contacts", contacts); ReadRead data objects is as easy as List<Person> = Paper.book().read("contacts"); the instantiated class is exactly the one used to save data. Limited changes to the class structure are handled automatically. See Handle data class changes. Use default values if object doesn't exist in the storage. List<Person> = Paper.book().read("contacts", new ArrayList<>()); DeleteDelete data for one key. Paper.book().delete("contacts"); Remove all keys for the given Book. Paper.book().destroy(); Use custom bookYou can create custom Book with separate storage using Paper.book("for-user-1").write("contacts", contacts);
Paper.book("for-user-2").write("contacts", contacts); Each book is located in a separate file folder. Get all keysReturns all keys for objects in the book. List<String> allKeys = Paper.book().getAllKeys(); Handle data structure changesYou can add or remove fields to the class. Then on next read attempt of a new class:
Note: field type changes are not supported. For example, if you have following data class saved in Paper storage: class Volcano {
public String name;
public boolean isActive;
} And then you realized you need to change the class like: class Volcano {
public String name;
// public boolean isActive; removed field
public Location location; // New field
} the isActive field will be ignored on next read and new location field will have its default value as null. Exclude fieldsUse transient keyword for fields which you want to exclude from saving process. public transient String tempId = "default"; // Won't be saved Set storage location for Book instancesBy default, all the Paper data files are located with all files belonging to your app, at
Export/Import
Proguard config
also you can implement Serializable for all your data classes and keep all of them using:
How it worksPaper is based on the following assumptions:
Paper saves each object for given key in a separate file and every write/read operations write/read the whole file. The Kryo is used for object graph serialization and to provide data compatibility support. Benchmark resultsRunning Benchmark on Nexus 4, in ms:
Limitations
Apps using Paper
License
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论