Comments (5)
Icicle
is the old name that the Android platform used for the saveInstanceState
and outState
parameters. The onSaveInstanceState()
method itself used to be called onFreeze()
. There's some nostalgia involved here, plus the whole idea of a frozen state is not that bad. Icicle
is the frozen state and Icepick
is the tool used to manipulate it!
from icepick.
I can understand this nostalgia, but still believe the API would be more elegant with a name closer to the lib's name.
:)
from icepick.
Hah, I actually just cooked up a library very similar to this one and for the same nostalgia planned on calling it Icicle, with the annotation name being @memoize. Found this one when googling for icicle to see if the name was taken.
Thing is, I still plan to proceed with my own library since it is actually more widely applicable, since it can retain class fields of arbitrary types and not just things one can stick in a bundle. I need that since I am preserving complex non serializable objects across configuration changes. It's meant to replace the deprecated onRetainNonConfigurationInstance.
I hope I'm not adding too much to the confusion!
from icepick.
I'm glad I'm not the only nostalgic in the room ๐
I use Icepick as a way to avoid repeating the same code over and over again, but it was never intended as something more than what Android provides.
I'm interested in seeing why you need to preserve such complex objects across life cycle.. component state is designed to be nimble and fast. Anyway, feel free to use the bits of code that you need for your end.
from icepick.
Cool!
To explain: it doesn't do any magic, and certainly nothing that would be against Android's component life-cycle. Google recommend that in order to replace onRetainNonConfigurationInstance, you move that state to fragments. Since there can, however, still be shared state across multiple fragments in a given activity, what my library does is create a data holder fragment for the host activity that is set to retain instance state.
After a call to onCreate, the activity can then rest assured that all annotated member fields will be initialized with whichever state was valid before, by pulling these fields out of the retained fragment (this is all transparent to the activity of course, there is no explicit interaction with the fragment).
A very good use case for this is retaining AsyncTask
or any other concurrency objects across orientation changes, since you cannot stuff these into Bundles.
from icepick.
Related Issues (20)
- Need a tutorial
- Add support for visibility state HOT 3
- Unable to pre-dex exception HOT 2
- Build fails with java.lang.ExceptionInInitializerError HOT 2
- Fix missing @Override in generated classes HOT 1
- Please release 3.2.0
- Any chance to release under Apache-2.0 ??? HOT 1
- How to save state of serialize object.
- java.util.HashMap cannot be cast to java.util.LinkedHashMap HOT 2
- what I did wrong? HOT 1
- Support incremental annotation processing HOT 11
- Gradle error :app:javaPreCompileDebug
- Process 'command 'C:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished with non-zero exit value 1 HOT 3
- Bundler that modifies object in get method
- Could not find icepick-processor.jar in jcenter() HOT 7
- Guys i am trying to run my gradle project but it is showing some errors, can someone help me
- The proguard rule does not work on MI4 (Android 4.4)
- Execution failed for task ':client-app:bootRun'. > Process 'command 'C:\Program Files\Java\jdk1.8.0_161\bin\java.exe'' finished w ith non-zero exit value 1 HOT 3
- Bug: icepick ver3.2.0:ใDeveloper options: ON> Dont keep activities: ONใ, when re-generating Activity, instance state value can not be obtained in Icepick.restoreInstanceState
- module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from icepick.