一、Activity的概要说明

我看过Activity的源码,Activity类注释大概是这样解释的:几乎所有的Activity都是与用户交互用的,我想用了一个几乎的意思应该是排除一些纯展示界面吧,因此Activity类主要是创建一个窗口来展示我们所做的UI界面,我们用的时候通常是全屏来展示UI界面的,但是Activity也有一些其他的用途,比如当做一个悬浮的视窗来用(在清单文件里更改Activity的主题)。

二、Activity的四种LaunchMode

设置:<activity android:name=".MainActivity" android:launchMode="standard" />

1、Standard:把Activity设置成Standard启动模式的意思是:比如当前显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivity实例,接下来由FirstActivity跳转到FirstActivity,此时任务栈里就会生成一个新的FirstActivity实例,如果再次跳转到FirstActivity,任务栈里又会多出第二个FirstActivity实例,到现在为止任务栈里一共有三个FirstActivity实例,这时候我们连着按两次Back键,才会返回到第一个FirstActivity,如下图所示:

2、SingleTop:比如当前界面显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivity实例,接下来由FirstActivity跳转到FirstActivity,这个时候系统发现在栈顶处已经存在一个FirstActivity实例了,所以就不会再新建FirstActivity实例了(如第一个图),否则就会在栈顶新建它的实例(如第二个图),从SecondActivity跳转到FirstActivity的时候,发现虽然任务栈里存在FirstActivity实例,但是位置不在栈顶,所有就新建了一个FirstActivity实例。

3、SingTask:比如我们当前显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivivity实例,接下来由FirstActivity跳转到SecondActivity,系统发现任务栈里还没有SecondActivity实例,于是就会新建一个SecongActivity实例放于栈顶(如下图的上半部分),接下来我们由SecondActivity跳转到FirstActivivity,系统会发现在栈里已经存在FirstActivivity实例了(不管位置在哪),所以就不会在栈里新建FirstActivity实例的,同时还会把FirstActivity实例上面的对象全不都弹出栈(如下图的下半部分)。

4、singleInstance:这种启动模式的特别之处在于会启动一个新栈,一个栈存放一类(类别)的实例,就好比动物园里,好多只老虎有自己的园子,好多只猴子又有自己的园子,这里的老虎猴子就是不同的Activity,每一只老虎猴子就是个自Activity的实例。

比如说我们当前显示的界面是FirstActivity,此时栈里就会有一个FirstActivivity实例,接下来由FirstActivity跳转到SecondActivity,这个时候就会出现一个新栈来存放SecondActivity实例的,按一下Back键又回到了第一个栈里(如下边第一个图)。假如我们从FirstActivity跳转到SecondActivity,又从SecondActivity跳转到FirstActivity,这个时候在FirstActivity所在的栈里又会创建一个新的FirstActivity实例放在栈顶,接下来我们按两次Back键,并没有退出程序,而是回到了SecondActivity(如下边第二个图)。

三、Activity的生命周期
     对于初学者的人来说看我的图也许会很乱,在后边我会描述一下,生命周期大家可以根据每个状态UI的特点去记就会比较容易了,在这里我已经对每个周期的UI状态进行用云注释进行描述了。
     
说明:
四、Activity横竖屏切换的生命周期
     1、设置属性android:screenOrientation="sensor",根据重力感应切换
        
     2、只要加上这个属性android:configChanges="keyboardHidden|orientation|screenSize",切换时生命周期就不会改变
       
     3、
 
四、Activity类里容易被忽略的方法
     (一)onNewIntent(Intent intent)
         Activity的启动模式为singleTop/singleTask会执行onNewIntent方法,比如从OneActivity(SingTask模式)跳转到TwoActivity,再从TwoActivity回来,OneActivity的生命周期就会变成onNewIntent()---->onResart()------>onStart()----->onResume(),也就是说只要OneActivity在任务栈里,并且又不是第一次进入到OneActivity,就会执行onNewIntent()方法。那么
   (二)onSaveInstanceState(Bundle outState)
          在网上查过很多人资料,说这个方法只有在系统内存不够时,Activity被强制杀死的时候才会被执行,但是这种说法是错误,我试了几种情况,也会执行  
    onSaveInstanceState方法。
          1、Activity正常的跳转
        
           2、按Home键退到后台的时候
       
           3、横竖屏切换的时候,比如我们在看电影的时候,横竖屏切换的时候,必须保存切换之前看的进度。
       
           3、onConfigurationChanged(Configuration newConfig)
            android:onConfigurationChanged实际对应的是Activity里的onConfigurationChanged()方法。
     在AndroidManifest.xml中添加上诉代码的含义是表示在改变屏幕方向、弹出软件盘和隐藏软键盘时,不再去执行onCreate()方法,
     而
是直接执行onConfigurationChanged()。如果不申明此段代码,按照Activity的生命周期,都会去执行一次
onCreate()方法,而onCreate()方法通常会在显示之前做  
     一些初始化工作。所以如果改变屏幕方向这样的操作都去执行onCreate()
方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导
    致数据的丢失。这是需要千万避免的。
五、Activity显示启动的第二种方法
 
 
六、Activity的隐式启动
      有些人不知道从一个项目的Activity如何跳转的另一个项目指定的Activity中,就可以用隐式跳转
7、如何打开系统图库
 
8、文本信息发送到短信APK中
     
 
      
 
 
 
         
          
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    

Android四大组件之Activity详解的更多相关文章

  1. Android四大组件之Activity详解——创建和启动Activity

    前面我们已经对Activity有过简单的介绍: Android开发——初始Activity Android开发——响应用户事件 Android开发——Activity生命周期 先来看一下最终结果 项目 ...

  2. Android四大组件之Activity详解——传值和获取结果

    废话不多说,先来看效果图 项目源码: http://download.csdn.net/detail/ginodung/8331535 程序说明: 在MainActivity中输入用户名和密码,然后提 ...

  3. Android四大组件之一 -- Service详解

    相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...

  4. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  5. Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

                如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com   ...

  6. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  7. 【Android开发日记】之入门篇(四)——Android四大组件之Activity

    在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...

  8. Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)

    什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...

  9. Android学习之基础知识十三 — 四大组件之服务详解第一讲

    一.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使程序被切换到后台, ...

随机推荐

  1. XDocument读取xml的所有元素以及XPath语法

    原文  http://www.cnblogs.com/xxyishutong/p/3326375.html <?xml version="1.0" encoding=&quo ...

  2. 柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍

    一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...

  3. MFC非模态对话框销毁

    非模态对话框需要重载OnCanel方法, 并调用DestroyWindow, 且不能调用基类的OnCanel重载PostNcDestroy, 需要delete掉this指针 // Overrides  ...

  4. 修改ubuntu的默认python版本

    ubuntu14.04LTS上装有两个版本的python:python2.7.6与python3.4,默认使用python2.7.6. 可以使用以下命令来修改默认python版本: sudo cp / ...

  5. elmah - Error Logging Modules and Handlers for ASP.NET - 1 : 初体验

    elmah(英文):https://code.google.com/p/elmah/   写作思路:先看结果,然后再说原理   elmah文章基本内容如下   1.安装 2.基本使用 3.详细配置讲解 ...

  6. mywebsite1

    http://www.wuweierwei.com/ 个人网站 http://www.yyyweb.com/demo/icons-filling/index.html CSS3图标填充效果 http: ...

  7. matlab最小二乘法数据拟合函数详解

    定义: 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可 以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小. ...

  8. vs 2005 在IE下断点不起作用

    vs2005 加断点调试,ie下不起作用. 1. 点击[开始]->[运行] 命令:regedit. 2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Mi ...

  9. SQL中存储过程和自定义函数的区别(转载)

    存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在 ...

  10. C++函数传值调用

    C++的函数的参数调用是传值方式. 想要改变传值调用,有引用和指针两种方式.其中,引用的实现机理也是通过一个指针,但是具体和指针传值的方式又不一样.具体见:C++中的指针与引用 对于指针传值,其实实际 ...