# 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);
}
}
```
- 发布aar到maven仓库
- svn或gitlab代码上传规范
- maven仓库管理
- 自动构建
- Android自动构建
- Android-jenkins发布
- 规范
- Android
- Android组件模块文档
- 基础业务模块
- 智能导诊
- 科室医生
- 医院导航
- 健康资讯
- 健康百科
- 个人中心
- 外链模块
- 微信资讯
- 动态首页
- 互联网医院
- 外链模块基础版本
- 底层功能模块
- UI样式
- Http请求
- 动态功能
- 版本更新
- 支付(微信、支付宝)
- 二维码扫描
- 安全键盘
- 开发工具类模块
- icepick
- dart
- butterknife
- superRecycler
- jsonBuilder
- android-state
- iOS文档
- iOS组件模块文档
- iOS底层功能模块
- iOS弹出窗
- iOS加载框
- iOS-标准样式库
- iOS网络请求
- iOS二维码扫描
- iOS功能模块组件
- iOS健康资讯
- iOS健康百科
- iOS智能导诊
- iOS科室医生
- iOS医院导航
- iOS外链
- iOS模板(健康资讯类)
- iOS其它
- Cocoapods安装
- iOS-Cocoapods相关
- iOS-创建私有Cocoapods仓库
- 平台相关文档
- 全栈中心概述
- WEEX跨平台解决方法
- 玩转开发者平台
- android打包指南
- iOS自动化打包指南
- rubik-u web组件文档
- 开始
- 全局方法
- 列表组件
- 标题组件
- 按钮组件
- 切换组件
- 下拉框组件
- 开关/单/复选组件
- 功能列表组件
- 评星组件
- 搜索组件
- 图片上传组件
- 表单
- 表单例一
- 表单例二
- 表单例三
- 聊天组件
- 滑动刷新组件
- View窗口操作
- 面板组件
- 简单面板组件
- 信息展示面板
- 提示文字
- 底部悬浮组件
- 长文字展示组件
- 隐藏/显示面板
- 客户端组件
- 判断客户端环境
- 登录
- 等待框
- 提示框
- 时间选择器
- 扫码组件
- 拍照组件
- 访问相册组件
- 用户信息获取组件
- 返回上一页
- 返回首页
- 关闭webview
- 获取客户端类型
- 支付
- rubik-u web模板文档
- 基础组件模板
- 复选框使用案例
