最近在继续iPhone业务的同时还需要重新拾起Android。在有些生疏的情况下,决定从Android源码中感悟一些Android的风格和方式。在学习源码的过程中也发现了一些通用的模式,希望通过一个系列的文章总结和分享下。     该模式在不破坏封装的情况下,捕捉一个对象的内部状态,这样就可以在之后恢复到该状态。对于Android来说,在横竖屏切换的时候就可能需要在切换前捕捉状态,这样在切换后就可以进行恢复。
以TimePicker为例,备忘录模式实现的类图如下:     其中,SavedState支持小时和分钟数的存储,这样就可以确保在一些关键节点前后保持状态一直。 主要代码如下: public class TimePicker extends FrameLayout {     ......
    /**
     * Used to save / restore state of time picker
     */
    private static class SavedState extends BaseSavedState {         private final int mHour;
        private final int mMinute;         private SavedState(Parcelable superState, int hour, int minute) {
            super(superState);
            mHour = hour;
            mMinute = minute;
        }
        private SavedState(Parcel in) {
            super(in);
            mHour = in.readInt();
            mMinute = in.readInt();
        }         public int getHour() {
            return mHour;
        }         public int getMinute() {
            return mMinute;
        }         @Override
        public void writeToParcel(Parcel dest, int flags) {
            super.writeToParcel(dest, flags);
            dest.writeInt(mHour);
            dest.writeInt(mMinute);
        }         public static final Parcelable.Creator CREATOR
                = new Creator() {
            public SavedState createFromParcel(Parcel in) {
                return new SavedState(in);
            }             public SavedState[] newArray(int size) {
                return new SavedState[size];
            }
        };
    }
    @Override
    protected Parcelable onSaveInstanceState() {
        Parcelable superState = super.onSaveInstanceState();
        return new SavedState(superState, mCurrentHour, mCurrentMinute);
    }     @Override
    protected void onRestoreInstanceState(Parcelable state) {
        SavedState ss = (SavedState) state;
        super.onRestoreInstanceState(ss.getSuperState());
        setCurrentHour(ss.getHour());
        setCurrentMinute(ss.getMinute());
    }
    ......   
}

更多相关文章

  1. 框架模式 MVC 在Android中的使用
  2. 【Android休眠】之Android休眠机制
  3. android进行主题切换不重启整个应用(style方式)
  4. Android中shape的使用
  5. Android隐藏状态栏 全屏
  6. Android(安卓)7 强势来袭开发者们不得不知道的细节
  7. Android和设计模式:备忘录模式
  8. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
  9. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像

随机推荐

  1. Android(安卓)获取前台应用
  2. Android(安卓)Textview控件
  3. android 自定义文字跑马灯 支持拖拽,按住
  4. Android下打开/关闭wifi 及 状态(5个)的
  5. Android(安卓)fragment 与Activity 互相
  6. Android(安卓)Touch事件传递机制解析
  7. Android(安卓)OpenGl展示视频内容
  8. Android布局管理
  9. Android开发高级进阶02
  10. Android之获取手机相关信息