企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# android-state A utility library for Android to save objects in a `Bundle` without any boilerplate. It uses an annotation processor to wire up all dependencies. ```groovy dependencies { implementation 'com.ucmed.monkey:android-state:1.3.0' // Java only project annotationProcessor 'com.ucmed.monkey:android-state-processor:1.3.0' // Kotlin with or without Java kapt 'com.ucmed.monkey:android-state-processor:1.3.0' } ``` ## Usage It's recommended to turn on a global setting in your `Application` class to save and restore the instance state of all activities and fragments from the support library. After that you only need to annotate your fields with `@State` inside of your fragments and activities. You can save any type which can be saved in a `Bundle` like the `String`, `Serializable`, and `Parcelable` data structures. 如果需要从`Activity Intent` 中获取传递的参数,请使用 `Extra` ```java public class App extends Application { @Override public void onCreate() { super.onCreate(); StateSaver.setEnabledForAllActivitiesAndSupportFragments(this, true); } } public class MainActivity extends Activity { @Extra("default_key") public int mValue; // ... } class MainFragment : Fragment() { @State var title = "My fragment" } ``` If you want to save the state of any other object or didn't turn on the global setting, then you need to use the `StateSaver` class for manually saving and restoring the instance state. ```java public class MainActivity extends Activity { @State public int mValue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); StateSaver.restoreInstanceState(this, savedInstanceState); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); StateSaver.saveInstanceState(this, outState); } } ``` 工具类 ``` import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import com.evernote.android.state.StateSaver; public final class BI { private BI() { throw new UnsupportedOperationException("unsupport constructor"); } public static void restoreInstanceState(Activity target, Bundle savedInstanceState) { if (savedInstanceState != null) { StateSaver.restoreInstanceState(target, savedInstanceState); } else { StateSaver.restoreIntentState(target, target.getIntent().getExtras()); } } @SuppressLint("NewApi") public static <T extends android.app.Fragment> void restoreInstanceState( T target, Bundle savedInstanceState) { if (savedInstanceState != null) { StateSaver.restoreInstanceState(target, savedInstanceState); } else { StateSaver.restoreIntentState(target, target.getArguments()); } } public static <T extends android.support.v4.app.Fragment> void restoreInstanceState( T target, Bundle savedInstanceState) { if (savedInstanceState != null) { StateSaver.restoreInstanceState(target, savedInstanceState); } else { StateSaver.restoreIntentState(target, target.getArguments()); } } public static void saveInstanceState(Activity target, Bundle outState) { StateSaver.saveInstanceState(target, outState); } @SuppressLint("NewApi") public static <T extends android.app.Fragment> void saveInstanceState( T target, Bundle outState) { StateSaver.saveInstanceState(target, outState); } public static <T extends android.support.v4.app.Fragment> void saveInstanceState( T target, Bundle outState) { StateSaver.saveInstanceState(target, outState); } } ```