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
}
}
}
Android中如何区分界面组件创建和销毁的类型的更多相关文章
- Android 自学之基本界面组件(下)
按钮(Button)与图片按钮(ImageButton)组件的功能和用法 Button继承了TextView,ImageButton继承了Button.不管是Button还是ImageButton,他 ...
- Android中使用findViewByMe提升组件查找效率
1.引出 安卓初学者一般在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载layout,通过findViewById来实现控件的绑定,刚 ...
- UE3中Object和Actor的创建与销毁
创建Object ① 在uc脚本中使用new运算符来创建 /********************************************************************** ...
- vue 组件创建与销毁
vue 组件(如对话框组件)实时创建与销毁: 使用v-if <search-history :show="showSearchHistory" @close="sh ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- Android中Json数据读取与创建
一: Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...
- Android 自学之基本界面组件(上)
文本款(TextView)和编辑框(EditText)的功能和用法 TextView直接继承了View,他还是EditText.Button两个UI组件的父类,TextView的作用就是在界面上显示文 ...
- Android中Json数据读取与创建的方法
转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...
- 转 Android中进入系统设置界面
Android软件时,常常需要打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息,这时我们就可以使用以下语句来实现:(如打开“无线和网络设置”界面) Intent intent = new ...
随机推荐
- js的搜索框
第一种 单独一个form表单提交 <div class="hc-prm-search search flr"> <form action="/user ...
- 【转】IUSR和IIS_IUSRS
转自:http://blog.chinaunix.net/uid-20344928-id-3306130.html 概述 在早期的IIS版本中,随着IIS的安装,系统会创建一个IUSR_Mac ...
- C# 通过窗口句柄获取程序路径 图标
转自:http://qqhack8.blog.163.com/blog/static/11414798520113363829505/ C# 通过窗口句柄获取程序路径 图标using System;u ...
- php 日期时间运算比较
$sql= "select * from t_datestudy where id='4750' and agreemode='2' and school_agree !='1'" ...
- selenium - xpath - 定位
前言: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. 看这里介绍:w3school 首先来看一下xpath常用的语法: 一.xpath ...
- ubuntu下安装ros出现“无法下载-package.ros.org中某个包-校验和不符”的解决方法
新安装的Ubuntu14.04,为了科研马上准备装ros indigo,却困难重重,一步一个坎. 比如说按照ros wiki里面一步一步来,当运行sudoapt-get update 然后出现下列情况 ...
- Intent使用方法
显示Intent 通过构造函数的重载,创建Intent对象,并用startActivity()启动目标活动. 目标活动需要在AndroidManifest.xml中注册 ...... Intent i ...
- 平台调用之如何利用VS2013 C#调试C++DLL库
对于托管代码调用非托管DLL文件,已经是非常普遍的事情,下面写一下如何通过托管代码(C#)像调试托管代码一样调试DLL中的代码. 注意:(1)[dll工程和调用dll的exe工程需要在同一个解决方案中 ...
- android UI之去掉状态栏
Android去掉标题栏和全屏都是件很容易的事情,最常见的有两种方法: 第一:在程序代码中实现 Java代码 this.requestWindowFeature(Window.FEATURE_NO_T ...
- linux composer的使用
安装好的composer使用很简单,分两步加载组件例1.搜索组件:composer search phpexcel2.下载组件:composer require 厂商名/包名然后在使用该插件的脚本中引 ...