android开发学习之路(1)---- activity及intent基本详解(1)

广州在校大四程序猿一只,有志同道合的可以评论留个联系方式什么的,有空交流交流


Activity,算是安卓中最常出现的类了。Activity类的父类有Context、ContextWrapper、ContextTheme、Wraper等。

第一、activity主要属性:

1.name:activity的实现类的类名

2.icon:activity对应的图标

3.lable:activity对应的标签

4.exported:指定activity是否可以被其他应用调用,默认false,比如第三方组件的页面,微博分享等activity,希望可以被其它应用程序调用,就设置为true

5.launchMode:指定activity的加载模式:standard、singleTop、singleTask、singleInstance这4种加载模式,具体作用下面会有详解

6.<intent-filter>:指定activity可响应的Intent


第二、activity的生命周期



这张图片是最原始的图的。下面这段话有点啰嗦,没耐心的直接看图`-`

首先,在activity第一次被创建的时候会调用onCreate,在onCreate里面会加载activity的布局,之后会在onMesure里面设置布局的位置大小,所以在onCreate里面是获取不到组件的大小的。onCreate的时候,activity并没有启动,只有调用了onStart的时候,activity才会启动,这时activity变为可见但不可交互,接着调用onResume方法,这时activity变为用户可见并可交互(输入、点击等行为)。当当前activity被其它页面挡住的时候,例如有电话打进来,就会执行onPause,当执行完onPause后,如果经过很长的等待或系统内存不足的时候,这个activity就会被销毁,这时会执行onStop、onDestory。当在onPause状态下,假如这个时候还没有执行onStop就会直接调用onRestart,假如已经destory,那悲剧了,只能重新onCreate了,讲的好啰嗦。。。。。。直接看图较快。


第三:activity的加载模式:

1.standard:默认加载模式,每次启动activity的时候都会重新创建一个activity实例(hashCode不一样)并将该实例假如当前task栈中,并不会创建新的task栈

2.singleTop:task栈顶单例模式,启动的时候,假如当前task栈的栈顶有当前activity的实例,直接复用已有的实例,假如栈顶实例和当前的不一样,新创建一个实例。如:启动Activity A 然后启动activity B  此时task栈里的实例是BA,B在栈顶,此时如果再启动B,就不会再创建Activity B实例,所以启动完task栈还是BA,但如果启动Activity A,A和栈顶实例B不一样,就会创建一个新的ActivityA,此时栈中实例为ABA

3.singleTask:task内单例模式,假设此时task中是AB,再启动A,task中还是AB,但如果启动B,则会将task中在B上面的实例移出task栈使B位于栈顶,此时task中是B

4.singleInstance:全局单例模式,如果启动的Activity不存在,创建一个Activity的实例并放如一个新的task栈中。这个模式最特别的地方就是每个task栈中只有一个实例,所以启动的Activity一直位于栈顶。假如Activity已经创建过,则不会再被创建一次,会直接复用已经存在的。



。。。。好晚了,今天就先写到这里。。。。。。。。。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值