美文网首页Android进阶之路Android开发Android开发
利用onSaveInstanceState()方法保存Activ

利用onSaveInstanceState()方法保存Activ

作者: 奔跑吧李博 | 来源:发表于2019-03-23 09:20 被阅读24次
    首先,onSaveInstanceState()会被调用的情况如下:

    1.按下HOME键时
    2.按下电源按键(关闭屏幕显示)时
    3.从activity 中启动一个新的activity时
    4.屏幕方向切换时

    总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任。

    方法:记录当前要保存的状态,
    重写onSaveInstanceState方法,将要保存的数据传入bundle中进行保存
    ,比如我们需要记录当前页播放的的播放进度,再次进入继续上次播放。

    @Override  
    protected void onSaveInstanceState(Bundle outState) {  
        outState.putInt("currentposition", videoView.getCurrentPosition());  
        super.onSaveInstanceState(outState);  
    }   
    

    恢复保存的状态:
    在oncreate方法中,获取bundle中的信息。

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            savedInstanceState.getInt("currentposition");
        }
    

    怎么保存fragment的状态呢?

    fragment自己维持了一个Bundle对象,即通过setArgument()存储,getArgument()获取。

        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
            getArguments().getInt("key");
        }
    
        @Override
        public void onDestroyView() {
            super.onDestroyView();
    
            getArguments().putInt("key",1);
        }
    

    相关文章

      网友评论

        本文标题:利用onSaveInstanceState()方法保存Activ

        本文链接:https://www.haomeiwen.com/subject/mpdxzftx.html