Android四大组件及activity的四大启动模式
Android四大组件
1. 广播接收者的两种类型:
(1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action。当系统发生了这个action时,就会执行我们所写的那个广播接收者的onReceive()方法里面的代码。
(2)自定义的广播接收者,也是继承BroadcastReceiver这个类,也要在清单文件中注册,但是给他的action名字是我们自己写的,我们写好的action字符串通过set给intent,然后使用sendBroadcast把这个intent发送出去。注意清单文件中的action是我们自定义的action的名字。(这个很少用)
2. 广播接收者,是可以刷新UI的,就是可以弹吐司放音乐。
3. 进程优先级(从高到低):(4和5很容易被杀,杀了不会重启)
(1)前台进程:与用户交互的activity。
(2)可见进程:onPause()的activity,可见但失去焦点。
(3)服务进程:如果是系统杀死,在内存充足的情况也会重启;如果用户手动杀死,就不会重启。3已经不容易杀了。故后台代码一般写在服务中。
(4)后台进程:例如一个不可见的activity。
(5)空进程:没有任何活动组件。
4. 服务的小知识:服务是通过error来死亡的,也就是在logcat看到的这个error是正常的。startActivity()与activity无关,bindActivity()与activity绑定。
5. bindService的作用:在一个activity(平民)中,service(领导)对象是无法拿到的,因此service里面的非静态方法无法调用,于是引出了bindService(中间人)。
Activity的四种加载模式:
1、standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为Act1,执行语句:
startActivity(new Intent(Act1.this, Act1.class));
后Act1将跳转到另外一个Act1,也就是现在的栈里面有 Act1 的两个实例。按返回键后你会发现仍然是在Act1(第一个)里面。
2、singleTop:singleTop 跟standard 模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所 看到的activity)时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。拿上面的例子来说,当Act1 为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。这个貌似用得比较少。
3、singleTask: singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中, 经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为 singleTask 模式,这种问题将不复存在。不过前阵子好像又看过有人说一般不要将除开始页面的其他页面设置为 singleTask 模式,原因暂时不明,哪位知道的可以请教下。
4、singleInstance: 设置为 singleInstance 模式的 activity 将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。拿一个例子来说明吧:
现在有以下三个activity: Act1、Act2、Act3,其中Acti2 为 singleInstance 模式。它们之间的跳转关系为: Act1 -- Act2 -- Act3 ,现在在Act3中按下返回键,由于Act2位于一个独立的task中,它不属于Act3的上下文activity,所以此时将直接返回到Act1。这就是singleInstance模式。
Android四大组件及activity的四大启动模式的更多相关文章
- Android的四大组件之Activity
Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- 【Android】安卓四大组件之Activity(二)
[Android]安卓四大组件之Activity(二) 前言 在这篇文章之前,我已经写过了一篇有关Activity的内容,是关于activity之间的页面跳转和数据传递,而这篇文章着重强调的是Acti ...
- 【Android】安卓四大组件之Activity(一)
[Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- 02_四大组件之Activity
四大组件之Activity 1. 理论概述 1.1 Activity的理解 Servlet的理解回顾 狭义 Servlet是一个interface,我们的Servlet类都必须是此接口的实现类 广义 ...
- 安卓四大组件之一activity
概要说明 Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播 ...
随机推荐
- WPF-编程问题和解决
1.wpf中点击button按钮后怎么让TextBlock显示button按钮的值? <TextBlock x:Name="CurProtext" Grid.Column=& ...
- 转载: 查看HADOOP中一个文件有多少块组成及所在机器ip
看文件信息 hadoop fsck /user/filename 更详细的 hadoop fsck /user/filename -files -blocks -locations -racks ...
- MSI Error 1603 installing AppFabric 1.1 / Win7 x64
MSI Error 1603 installing AppFabric 1.1 / Win7 x64 Archived Forums A-B > AppFabric Caching 先说解 ...
- 针对web高并发量的处理
针对web高并发量的处理 针对高并发量的处理 一个老生常谈的话题了 至于需要运维支持的那些cdn.负载均衡神马的就不赘述了 你们都懂的 虫子在此博文只讲一些从程序角度出发的一些不错的解决方案. 至于从 ...
- [转]一些TCP和UDP使用问题汇总
下面是在实际后台开发中遇到的一些关于TCP和UDP的问题,这里慢慢积累起来: UDP连续发送2次数据包,第一次发100字节,第二次发200字节,服务端recvfrom(1000)时收到100.200还 ...
- 安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具
已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具 错误提示:已安装 SQL Server 2005 E ...
- Ubuntu setup Static IP Address
Change Ubuntu Server from DHCP to a Static IP Address If the Ubuntu Server installer has set your se ...
- maven详解之生命周期与插件
Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...
- Django 之 分表
app名称为'core',基本的models.py文件内容如下: class Province(models.Model): name = models.CharField(u'省份名称',max_l ...
- (Array,位操作)137. Single Number II
Given an array of integers, every element appears three times except for one. Find that single one. ...