本文主要描述:

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
}
}
}

Android中如何区分界面组件创建和销毁的类型的更多相关文章

  1. Android 自学之基本界面组件(下)

    按钮(Button)与图片按钮(ImageButton)组件的功能和用法 Button继承了TextView,ImageButton继承了Button.不管是Button还是ImageButton,他 ...

  2. Android中使用findViewByMe提升组件查找效率

    1.引出 安卓初学者一般在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载layout,通过findViewById来实现控件的绑定,刚 ...

  3. UE3中Object和Actor的创建与销毁

    创建Object ① 在uc脚本中使用new运算符来创建 /********************************************************************** ...

  4. vue 组件创建与销毁

    vue 组件(如对话框组件)实时创建与销毁: 使用v-if <search-history :show="showSearchHistory" @close="sh ...

  5. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  6. Android中Json数据读取与创建

    一:  Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...

  7. Android 自学之基本界面组件(上)

    文本款(TextView)和编辑框(EditText)的功能和用法 TextView直接继承了View,他还是EditText.Button两个UI组件的父类,TextView的作用就是在界面上显示文 ...

  8. Android中Json数据读取与创建的方法

    转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...

  9. 转 Android中进入系统设置界面

    Android软件时,常常需要打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息,这时我们就可以使用以下语句来实现:(如打开“无线和网络设置”界面) Intent intent = new ...

随机推荐

  1. js的搜索框

    第一种  单独一个form表单提交 <div class="hc-prm-search search flr"> <form action="/user ...

  2. 【转】IUSR和IIS_IUSRS

    转自:http://blog.chinaunix.net/uid-20344928-id-3306130.html   概述   在早期的IIS版本中,随着IIS的安装,系统会创建一个IUSR_Mac ...

  3. C# 通过窗口句柄获取程序路径 图标

    转自:http://qqhack8.blog.163.com/blog/static/11414798520113363829505/ C# 通过窗口句柄获取程序路径 图标using System;u ...

  4. php 日期时间运算比较

    $sql= "select * from t_datestudy where id='4750' and agreemode='2' and school_agree !='1'" ...

  5. selenium - xpath - 定位

    前言: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. 看这里介绍:w3school 首先来看一下xpath常用的语法: 一.xpath ...

  6. ubuntu下安装ros出现“无法下载-package.ros.org中某个包-校验和不符”的解决方法

    新安装的Ubuntu14.04,为了科研马上准备装ros indigo,却困难重重,一步一个坎. 比如说按照ros wiki里面一步一步来,当运行sudoapt-get update 然后出现下列情况 ...

  7. Intent使用方法

    显示Intent 通过构造函数的重载,创建Intent对象,并用startActivity()启动目标活动. 目标活动需要在AndroidManifest.xml中注册 ...... Intent i ...

  8. 平台调用之如何利用VS2013 C#调试C++DLL库

    对于托管代码调用非托管DLL文件,已经是非常普遍的事情,下面写一下如何通过托管代码(C#)像调试托管代码一样调试DLL中的代码. 注意:(1)[dll工程和调用dll的exe工程需要在同一个解决方案中 ...

  9. android UI之去掉状态栏

    Android去掉标题栏和全屏都是件很容易的事情,最常见的有两种方法: 第一:在程序代码中实现 Java代码 this.requestWindowFeature(Window.FEATURE_NO_T ...

  10. linux composer的使用

    安装好的composer使用很简单,分两步加载组件例1.搜索组件:composer search phpexcel2.下载组件:composer require 厂商名/包名然后在使用该插件的脚本中引 ...