一、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. Windows 8 DirectX 和Xaml UI 混合处理方案

    原文 http://www.cnblogs.com/chenkai/archive/2012/11/29/2794983.html [如果不想读这么长问题描述和通用的解决方案. 可以直接skip 这段 ...

  2. logrotate 日志清理后 rsyslog中断问题

    <pre name="code" class="html">随后配置logrotate的配置文件/etc/logrotate.conf,加入下面的内 ...

  3. chrome 下的 proxy 插件安装

    Install “Proxy SwitchyOmega” extensions for chrome.

  4. 许士彦:创业不走寻常路 APP最好时间已过

    从用户体验服务设计公司eico design到拥有两千多万用户的独立微博客户端Weico,再到备受欢迎的影像APP(微可拍,Weico Gif),Weico团队走过了一条不寻常的创业之路. 作为一家新 ...

  5. 分布式ElasticSearch简单介绍

    这里我们解释一些通用的术语,比如集群(cluster).节点(node)和分片(shard).Elasticsearch的扩展机制,以及它怎样处理硬件故障.在此将探索怎样创建你的集群(cluster) ...

  6. Oracle 关于V$OPEN_CURSOR

    参考链接:http://www.askmaclean.com/archives/about-dynamic-view-open_cursor.html#wrap 在之前的一次讨论中,有同行指出V$OP ...

  7. AppDelegate关于应用程序挂起、复原与终止的代理方法

    AppDelegate关于应用程序挂起.复原与终止的代理方法: 首次运行: - (BOOL)application:(UIApplication *)application didFinishLaun ...

  8. SQL2008 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

    'OFFSET' 附近有语法错误.在 FETCH 语句中选项 NEXT 的用法无效. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出 ...

  9. JavaSE复习日记 : java包机制

    这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; ...

  10. 实现单例模式C++版本

    还是先看最简单的C++单例模式 class CSingleton { private: CSingleton(){} static CSingleton *pInstance; public: sta ...