package com.sora.util.akatsuki; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Retains annotated field through a {@link android.os.Bundle}. To save or * restore, see {@link Akatsuki} */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.SOURCE) public @interface Retained { /** * Rules on how a field will be restored from a bundle. */ enum RestorePolicy { /** * Default restore policy, same as {@link #OVERWRITE} */ DEFAULT, /** * Field will be restored regardless of the field or the key * state */ OVERWRITE, /** * Field will be restored only if the target field is null */ IF_NULL, /** * Field will be restored only if the target field is not * null */ IF_NOT_NULL } /** * This field will not be retained */ boolean skip() default false; /** * Applies a {@link com.sora.util.akatsuki.Retained.RestorePolicy} on the * restoration of the field. Defaults to * {@link com.sora.util.akatsuki.Retained.RestorePolicy#OVERWRITE} */ RestorePolicy restorePolicy() default RestorePolicy.DEFAULT; }