重要的回调函数:

onCreate():初始化activity要用的其他的组件(可以是其他的activity和contentprovider之类)。调用setContentView(),设定本Activity用户界面的布局。

onPause():用户离开activity。确认哪些用户更改需要保存。

用户界面:

用户界面由View的子类实现,每个view控制Activity中的一块矩形空间(例如按钮)。

线程的View:

小部件:按钮、文本框、复选框、图像。

布局:ViewGroup的子类,线性布局、网格布局、相对布局。

借助Android程序的资源内的xml布局文件来定义布局。这样Activity代码负责行为,而布局定义在xml中。

在清单文件中定义Activity,这样Activity才能被执行。

Android SDK创建Android程序时,自动创建intent-filter:

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" /> ------- 指定该Activity是Android程序的主入口
        <category android:name="android.intent.category.LAUNCHER" /> ------- Activity有系统的Launcher来启动
    </intent-filter>
</activity>

开发者可以创建更多的<intent-filter>,与其他组件的隐式Intent想匹配,从而可以让其他组件激活此Activity。

https://developer.android.com/guide/components/intents-filters.html

Intent是一个消息对象。其使用方式如下:

1) 启动Activity。

将Intent传给startActivity(),可以启动一个Activity实例。Intent描述了要启动的Activity,并携带了必要的数据。

将Intent传给startActivityForResult(),启动的Activity结束后会调用回调函数onActivityResult(),将结果返回。

2) 启动Service。

Intent指定具体哪个服务,并携带必要的数据。

将Intent传递给startService(),启动一个服务,进行一次性操作(例如,下载文件)。

将Intent传递给bindService(),绑定一个服务。

3) 传递广播。

广播是所有Android程序都可以接收的消息。Android OS将各种系统事件(例如充电)广播出去。

将Intent传递给sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast(),进行广播。

Intent有如下类型:

1) 显式Intent:通过类名来指定要启动的组件(反射机制)。

2) 隐式Intent:声明要执行的动作(例如,在地图上显式位置),让其他Android程序完成此动作。

查找清单文件,如果隐式Intent与文件中的<intent-filter>匹配,则启动该Android程序。

如果有多个Android程序的<intent-filter>匹配,则显示一个列表,供用户选择。

<略>

保存Activity的状态:

在Activity进入pause和stop状态之后,可能会被Android OS杀掉。

在回调函数onSaveInstanceState()中保存状态,这样用户再次回到Android程序时,一切如初,好像什么也发生一样。

在Android OS销毁Activity时,传递一个Bundle给onSaveInstanceState(),将名值对放入Bundle。

当Android OS重新创建Activity时,Bundle被传递给onCreate()和onRestoreInstanceState(),于是Activity的状态可以恢复出来。

Android编程-Activity的更多相关文章

  1. Android编程: Activity生命周期和LogCat使用

    学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建    onCreate重启    onRestart开始    onStart恢复 ...

  2. Android 编程下 Activity 的创建和应用退出时的销毁

    为了确保对应用中 Activity 的创建和销毁状态进行控制,所以就需要一个全局的变量来记录和销毁这些 Activity.这里的大概思路是写一个类继承 Application,并使获取该 Applic ...

  3. 关于android编程中service和activity的区别

    一. 绝大部分情况下,Service的作用是用来“执行”后台的.耗时的.重要的任务,三者缺一不可,而最重要的原因是第三点:要执行重要的任务. 因为当一个进程启动了Service后,进程的优先级变高了, ...

  4. Android内存Activity泄露:Threads

    Android编程中一个共同的困难就是协调Activity的生命周期和长时间运行的任务(task),并且要避免可能的内存泄露.思考下面Activity的代码,在它启动的时候开启一个线程并循环执行任务. ...

  5. Android中Activity、Service和线程之间的通信

    Activity.Service和线程应该是Android编程中最常见的几种类了,几乎大多数应用程序都会涉及到这几个类的编程,自然而然的,也就会涉及到三者之间的相互通信,本文就试图简单地介绍一下这三者 ...

  6. Android编程中的5种数据存储方式

    Android编程中的5种数据存储方式 作者:牛奶.不加糖 字体:[增加 减小] 类型:转载 时间:2015-12-03我要评论 这篇文章主要介绍了Android编程中的5种数据存储方式,结合实例形式 ...

  7. Android学习 -- Activity 以及Activity之间值传递

    项目结构如图 关键代码如下 strings.xml文件代码如下: <?xml version="1.0" encoding="utf-8"?> &l ...

  8. 《Android编程权威指南》

    <Android编程权威指南> 基本信息 原书名:Android programming: the big nerd ranch guide 原出版社: Big Nerd Ranch Gu ...

  9. 【Android】Activity 生命周期具体解释

    与其它编程模式不同,android中的Activity没有main()函数.我们无法决定Activity的创建和销毁过程,Activiy的创建和销毁(即生命周期)由系统完毕,系统会在Activity的 ...

随机推荐

  1. js中的正则

    闭包: 函数在调用的时候会形成私有的作用域,对内部的变量起到保护的作用,这就是闭包: 变量销毁: 1.人为销毁 : var a = 12:   a = null: 2.孜然销毁 : 函数在调用完之后, ...

  2. Matlab R2015b_@Ubuntu 16_安装备忘

    1.下载解压包解压 2.cd 进入文件夹,使用 sh 打开,安装过程中不要使用“网络激活” 3.mv Crack文件中的 /R2015b/bin/glnxa64 里面的三个lib*.so 到Matla ...

  3. 卷积神经网络特征图可视化(自定义网络和VGG网络)

    借助Keras和Opencv实现的神经网络中间层特征图的可视化功能,方便我们研究CNN这个黑盒子里到发生了什么. 自定义网络特征可视化 代码: # coding: utf-8 from keras.m ...

  4. linux c 使用socket 发送http请求 可以发送json格式数据

    #include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <time.h ...

  5. python基础分享

    # 一.变量命名规范 # 1.数字 字母 下划线 组成 # 2.不能数组开头和纯数字 # 3.不能用python相关关键字 # 4.不要用中文 # 5.要有意义 # 6.不要太长 # 7.区分大小写 ...

  6. CentOS下将php和mysql命令加入到环境变量中-简单

    开发过程中.需要使用到php命令执行程序.但是php命令没有在全局命令中:每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了 例: php -v  或 mys ...

  7. JPA Example 基本使用使用实例

    一.相关接口方法     在继承JpaRepository接口后,自动拥有了按“实例”进行查询的诸多方法.这些方法主要在两个接口中定义,一是QueryByExampleExecutor,一个是JpaR ...

  8. Python3.7 练习题(-) 如何使用Python生成200个优惠卷(激活码)

    # 如何使用Python生成200个优惠卷(激活码) import random import string # string.ascii_letters 26个大小写 # -9数字 # 获得激活码中 ...

  9. mysql count 主键之坑

    https://www.2cto.com/database/201508/433975.html

  10. laravel-阿里大于

    安装扩展 # 安装curl模块apt-get install curl # 安装php5-curl扩展apt-get install php5-curl # 安装laravel阿里大鱼服务compos ...