• Android中如何区分界面组件创建和销毁的类型


    本文主要描述:

    1.分辨系统杀掉退出还是用户主动退出
    2.分辨全新的创建还是系统恢复性的创建

    1.分辨系统杀掉退出还是用户主动退出

    当一个组件失去焦点后,系统有可能为了释放资源而杀掉这个组件,这个时候系统会调用到onSaveInstanceState方法用来通知保存一些状态数据。而如果用户是按下了back键或者在代码的某个地方 执行了context.finish()而导致组件退出,则不会走到onSaveInstanceState方法。

    所以可以根据是否走到了onSaveInstanceState方法来判断组件是被系统杀掉退出还是用户主动退出

    2.分辨全新的创建还是系统恢复性的创建

    同理,如果是系统杀掉了组件,那么如果将来需要恢复这个组件(即组件重建,比如旋转屏幕),那么在onCreate中传来savedInstanceState这个Bundle数据就不是空的。反之若是新创建的组件,这个Bundle一定是空的。

    所以在写一个activity的时候,在onCreate里面要处理这个组件是新创建的还是系统恢复性的创建,这个对后面的后续的逻辑是有区别的。

    比如一个邮件的撰写邮件:

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            
            if(savedInstanceState != null)
            {
                lastState = savedInstanceState.getBoolean("***");
                // restore last view
            }else
            {
                String action = getIntent().getAction();
                if(Intent.ACTION_SEND.equals(action) || Intent.ACTION_SENDTO.equals(action) || Intent.ACTION_VIEW.equals(action)
                        || Intent.ACTION_SEND_MULTIPLE.equals(action))
                {
                    //send email, then parse the sender name or text content from intent. init the email sending view
                }
            }
        }
  • 相关阅读:
    vue2查看大图vue-preview使用笔记
    promise使用场景
    vue2移动端使用vee-validate进行表单验证
    移动端单位换算理解
    ...
    我的promise学习笔记
    前端本地调试解决跨域的两种方法
    vue2 零星笔记
    vue2.x使用百度地图
    BZOJ 3368 约翰看山(扫描)O(N)
  • 原文地址:https://www.cnblogs.com/soaringEveryday/p/4292982.html
Copyright © 2020-2023  润新知