Realm Java 0.75
We recently released a Realm Java update to this website and to Maven. This release is a big one! Based on all your great suggestions, bug reports, and forum discussions, we made a hard decision to implement some breaking changes to the API. Here’s how this release impacts your code.
Realm now implements Closeable
Realm uses native resources and the standard Android and Java platform guidelines state that
finalize() cannot be trusted for cleaning up such resources. This means that whenever you obtain an instance of Realm you should have a matching
close() statement somewhere in your code.
Calling the close() method will allow Realm to free-up resources (disk & memory) by properly disposing of the Realm objects after you are done with them. This can be particularly helpful if you are seeing many out-of-memory errors, or large file sizes on disk (usually indicative of previously improperly-closed Realms.) See the documentation for more details.
Changes to Sorting RealmResults
For better speed and stability, sorting an instance of RealmResults is now an in-place operation. This means it’ll operate on the same instance it is called on instead of returning a new one.
Compact your Realm files
Realm now provides methods to compact Realm files. This is very useful if you want to share your database over the network or ensure your app takes up as little space as possible. The compacted file can be opened directly without the need of any further operation. See
compactRealmFile() for details.
Please be careful to only apply compaction to a Realm file if the Realm is not open. In general, you should only use the method when your app starts up and before any instances of Realm have been opened (this includes migration too, as migrations will open at least one realm instance).
Please note that compaction is not necessary in most cases, as unused space will eventually be reclaimed automatically for future writes to the Realm file.
If a current thread has a
Looper attached, Realm instances will automatically auto-refresh. We deprecated the Realm constructors that accepted the auto-refresh argument; they will be removed in 0.76.0.
Stability has improved in a few ways. Most importantly, we restored correct behavior of
equals() in the presence of cyclic data structures. Also, we added the ability to remove items while iterating an instance of