`
handsomeliuyang
  • 浏览: 311881 次
  • 性别: Icon_minigender_1
  • 来自: 益阳
社区版块
存档分类
最新评论

onSaveInstanceState(Bundle outState)的调用时机

阅读更多

Activity的方法onSaveInstanceState(Bundle outState),按照文档里说的,这个方法是在内存不够时,系统要强制杀掉这个Activity时,进行调用的。

 

但经过我的测试,发现这个方法并不是在系统内存不够时,要杀掉Activity时,才调用的。

 

测试结果:

1. 只要Activity不finish,Activity进入后台(比如Home键,跳转到其他的Activity),则其就会调用onSaveInstanceState(Bundle outState)方法,而且这个方法是在onPause方法之间进行调用的。

2. 如果Activity是执行了finish方法,才进入的后台,则不调用这个onSaveInstanceState(Bundle outState),而且下次再进入时,也不会使用这个保存的数据。

3. 在系统杀掉Activity所在的进程时,onSaveInstanceState(Bundle outState)方法根本就没有调用过。

 

总结:系统在杀进程时,不可能有时间去执行多余的代码,也只有这种方法,才能保存Activity里的最新数据,所以onSaveInstanceState(Bundle outState)会被执行多次,并不是只有一次。

分享到:
评论

相关推荐

    PinnedSectionListview

    protected void onSaveInstanceState Bundle outState { super onSaveInstanceState outState ; outState putBoolean "isFastScroll" isFastScroll ; outState putBoolean "addPadding" ...

    onSaveInstanceState调用的小例子

    通过这个例子描述onSaveInstanceState何时调用。非常简单的小例子。

    Android代码-icicle

    protected void onSaveInstanceState(Bundle outState) { outState.putString(AWESOME_STRING, mAwesomeString); outState.putInt(AWESOME_INT, mAwesomeInt); super.onSaveInstanceState(outState); } And then ...

    Android 中 onSaveInstanceState()使用方法详解

    protected void onSaveInstanceState(Bundle outState) { outState.putInt(currentposition, videoView.getCurrentPosition()); super.onSaveInstanceState(outState); } public void onCreat

    android 视频处理代码

    public class VideoActivity extends AppCompatActivity implements ... public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); isFinish = false; mRecorderView.stop(); }

    Android Activity 横竖屏切换的生命周期

    onSaveInstanceState(Bundle outState) :Activity 即将销毁时保存数据 onRestoreInstanceState(Bundle savedInstanceState) : Activity 重建或者恢复时候取出数据 横竖屏切换生命周期 1、启动程序进入Activity界面...

    Android onSaveInstanceState和onRestoreInstanceState触发的时机

    主要介绍了Android onSaveInstanceState和onRestoreInstanceState触发的时机的相关资料,需要的朋友可以参考下

    leash:注释支持,用于在Android上更改方向时保留对象

    皮带支持在Android上更改方向时保留对象的注释。介绍注释活动或片段中的字段,以在配置发生更改时保留它们。 public class ExampleActivity ... } @Override protected void onSaveInstanceState(Bundle outState) {

    onSaveInstanceState保存数据demo

    切换横竖屏,如何保存数据

    Android代码-自动帮你完成 onSaveInstanceState 和 onRestoreInstanceState 的相关操作

    No boilerplate code like onSaveInstanceState or onRestoreInstanceState any more. Getting started Just add the @AutoRestore annotation to your fields that need to be saved and restored in Activities, ...

    Android中用onSaveInstanceState保存Fragment状态的方法

    在Fragment里面,利用onSaveInstanceState保存数据,并可在onActivityCreated里面恢复数据。 public void onActivityCreated(Bundle savedInstanceState) { ...public void onSaveInstanceState(Bundle

    联想与百度android面试题集

    联想与百度android的面试题合集 一 Activity的生命周期 二 让Activity变成一个窗口:Activity属性设定 三 你后台的Activity被系统 回收怎么办:onSaveInstanceState 四 调用与被调用:我们的通信使者 - Intent

    Android 代码分析

    1 Android build system 4 1.1 Basic 4 1.2 Executable 6 ...30.3 你后台的Activity被系统回收怎么办:onSaveInstanceState 115 30.4 调用与被调用:我们的通信使者Intent 116 31 编译Native C的helloworld 118

    Android面试题

    Android面试之---Activity的详细讲解 这篇文章会涉及到以下几个内容 一 Activity的生命周期 二 让Activity变成一个窗口:...四 调用与被调用:我们的通信使者 - Intent Android面试之---Android的虚拟机Dalvik 介绍

    Node.js-一个框架可以自动生成OnSaveInstanceState代码

    android 内存被回收是一个开发者的常见问题。当我们跳转到一个二级界面,或者切换到后台的时候,如果时间过长或者手机的内存不足,当我们再返回这个界面的时候,activity或fragment就会被内存回收。

    Android-教程精华-开发

    Android中,Activity是所有程序的根本,所有程序的流程都运行在...void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy()

    Android相机 解决三星bug版本

    如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 onSaveInstanceState 保存图片的路径 当activity重新创建的时候 会将 onSaveInstanceState 保存的文件传递给onCreate()当中 在onCreate当中 检查照片...

Global site tag (gtag.js) - Google Analytics