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模式。

最新文章

  1. Servers
  2. 实现QQ在线咨询(需先添加好友)
  3. pg强制删库
  4. Python主文件路径和当前模块路径
  5. mysql的interval函数用法
  6. ARM处理器全解析:A8/A9/A15都是什么?
  7. ecshop首页调用指定商品分类下的商品品牌列表
  8. SKNode类
  9. crontab 实现定时脚本执行完毕再执行下一次
  10. HDU - 5234 Happy birthday
  11. 使用进程池规避Python的GIL限制
  12. HighCharts之2D对数饼图
  13. px妙转rem
  14. tomcat 拒绝服务
  15. Yii2 Restful api搜索实现
  16. Centos7 Tomcat9随机启动
  17. log4j 产生的日志位置设置和catalina.home、catalina.base
  18. Linux 服务器上快速配置阿里巴巴 OPSX NTP服务
  19. rawbytestring
  20. Oracle用分区表分区交换做历史数据迁移

热门文章

  1. Javase部分回顾(static (静态修饰符),修饰方法,单利的设计模式, 封装)
  2. 知识积累:CA详解
  3. tengine+tomcat配置
  4. Selenium2入门(三)WebDriver API之Get
  5. Javascript模式(第五章对象创建模式)------读书笔记
  6. Js 验证中文字符长度
  7. ESXi查询网卡的驱动和固件版本
  8. 最新版STS因为JDK版本太低无法启动的解决办法
  9. Hololens缩放物体源码(待完善)
  10. Mac下安装nginx