一大波面试就要靠近,赶紧总结总结一些基础问题

1、Activity的概念

是Android应用层开发的四大组件之一,主要负责和用户交互部分,有自己的生命周期,在其上可以布置按钮,文本框等各种控件,简单来说就是Android的UI部分,

注1:Activity之间通过Intent进行通信。(在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据)

注2:Activity与View的区别

1)     Activity是四大组件中唯一一个用来和用户进行交互的组件。可以说Activity就是android的视图层。

2)     如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View的,真正用来显示和处理事件的实际上是View。

3)     每个Activity内部都有一个Window对象, Window对象包含了一个DecorView(实际上就是FrameLayout),我们通过setContentView给Activity设置显示的View实际上都是加到了DecorView中。

当一个Activity被kill之前它可以调用onSaveInstanceState来保存当前Activity的状态信息

2、Activity的生命周期

上一张经典的图来感受一下

【onCreate】

;当Activity第一次被实例化的时候系统会调用,,整个生命周期只调用1次这个方法,通常用于初始化设置: 1、为Activity设置所要使用的布局文件2、为按钮绑定监听器等静态的设置操作

【onStart()】

当Activity可见未获得用户焦点不能交互时系统会调用

      

【onRestart()】

当Activity已经停止然后重新被启动时系统会调用

      

【onResume()】

当Activity可见且获得用户焦点能交互时系统会调用

        

【onPause】

当系统将要启动另一个 Activity时调用。此方法主要用来将未保存的变化进行持久化,停止类似动画这样耗费CPU的动作等。

比如:

(1)当系统而不是用户自己出于回收内存时,关闭了activity 之后。用户会期望当他再次回到这个activity 的时候,它仍保持着上次离开时的样子。此时用到了onSaveInstanceState(),方法onSaveInstanceState()用来保存 Activity被杀之前的状态,在onPause()之前被触发,

(2)当系统为了节省内存销毁了Activity(用户本不想销毁)时就需要重写这个方法 了,当此Activity再次被实例化时会通过onCreate(Bundle savedInstanceState)将已经保存的临时状态数据传入因为onSaveInstanceState()方法不总是被调用,触发条件为(按 下HOME键,按下电源按键关闭屏幕,横竖屏切换情况下),应该仅重写onSaveInstanceState()来记录activity的临时状态,
而不是持久的数据。应该使用onPause()来存储持久数据。

    

【onStop】

当Activity被新的Activity完全覆盖不可见时被系统调用

          

【onDestroy()】

当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate ()方法中创建的资源,如结束线程等

3、4种启动模式

首先必须说明是Activity是以栈的形式存放的。

【standard】

默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。即不管有没有已存在的实例,都生成新的实例

【singleTop】

可以有多个实例,但是不允许多个相同Activity叠加。即如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

【singleTask】

只有一个实例。在同一个应用程序中启动它的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

【singleInstance】    只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

关于onNewIntent方法截个图说明一下

具体在方式需要在清单文件中配置

如:<activity android:name="com.example.mobilesafe.WatchDogActivity"

             android:launchMode="singleInstance"/>

4、Activity的启动方法

主要有俩种

【startActivity()】    在一个Activity中调用startActivity()方法。

直接启动Activity,不带请求码。

【startActivityForResult()】   在一个Activity中调用startActivityForResult()方法。

可以一次性完成这项任务,当程序执行到这段代码的时候,页面会跳转到下一个Activity,

而当这个Activity被关闭以后(this.finish()),程序会自动跳转会第一个Activity,并调用前一个Activity的onActivityResult( )方法

带请求码启动Activity。

注:其实startActivity()本质就是startActivityForResult(),在startActivity()源码中还是调用了startActivityForResult(),将其第二个参数设置为-1而已,因此他们本质上没啥区别,startActivity()只是将startActivityForResult()做了一个简单封装而已。

参考:

http://blog.csdn.net/liuhe688/article/details/6754323

四大组件之Activity小结的更多相关文章

  1. Android的四大组件之Activity

    Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...

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

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

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

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

  4. 安卓四大组件之一activity

    概要说明 Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播 ...

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

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

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

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

  7. 02_四大组件之Activity

    四大组件之Activity 1. 理论概述 1.1 Activity的理解 Servlet的理解回顾 狭义 Servlet是一个interface,我们的Servlet类都必须是此接口的实现类 广义 ...

  8. 【Android】安卓四大组件之Activity(二)

    [Android]安卓四大组件之Activity(二) 前言 在这篇文章之前,我已经写过了一篇有关Activity的内容,是关于activity之间的页面跳转和数据传递,而这篇文章着重强调的是Acti ...

  9. 【Android】安卓四大组件之Activity(一)

    [Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...

随机推荐

  1. js error

    0x800a0259 - JavaScript 运行时错误: 未知的运行时错误 <p id="navigatorInfo"></p> var txt = & ...

  2. Sublime Text3时间戳查看转换插件的开发

    平常配置表中,经常需要用到时间配置,比如活动开始结束.从可读性上,我们喜欢2017-04-27 17:00:00,从程序角度,我们喜欢用1493283600.前者是包含时区概念的,而后者市区无关,所以 ...

  3. 小程序上拉下拉共存时不可使用scroll-view的解决方法

    使用 bindscrolltolower ,必须搭配使用的 scroll-view 会导致小程序 "enablePullDownRefresh": true 下拉不能使用. 解决方 ...

  4. 剑指架构师系列-Redis集群部署

    初步搭建Redis集群 克隆已经安装Redis的虚拟机,我们使用这两个虚拟机中的Redis来搭建集群. master:192.168.2.129 端口:7001 slave:192.168.2.132 ...

  5. python笔记十二(匿名函数)

    一.匿名函数 有些情况下,我们需要把函数当做参数传入到另外的函数中,或者是把函数作为某个函数的返回值,此时我们就可以使用匿名函数. 匿名函数的标志是lambda.   >>> f = ...

  6. Docker 数据卷容器

    如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器. 数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的. 首先,创建一个命名的数据卷容器 dbdata: $ sud ...

  7. 利用百度接口进行人脸识别并保存人脸jpg文件

    利用百度接口进行人脸识别,根据返回的人脸location用opencv切割保存. # coding : UTF-8 from aip import AipFace import cv2 import ...

  8. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

  9. iOS开源加密相册Agony的实现(二)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  10. Android开发之手把手教你写ButterKnife框架(二)

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开 ...