学习android最开始就是学习activity,每位同学的学习经历应该都类似
1、activity是什么?
activity中文译为活动,和用户的活动都需要依赖它,activity是一个重量型的角色,其他的三大组件都需要它才能正常工作。
activity得生命周期
onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy()
onCreate()和onDestroy()代表创建和销毁
onStart()和onStop()代表可见和不可见
onResume()代表和用户交互
常用的回调方法:
onCreate()方法可以用来初始化界面资源,
onStop()这里可以用来停止服务或者线程,
onDestroy()方法可以用来释放资源。
2、activity启动模式?
android:launchMode=""
singleTask:单例模式,在activity栈中有a活动的实例,那么启动a活动会调用栈中已有的a活动,而不会生成新的a活动。
standard:标准模式,可以有多个相同的activity实例,每次启动活动都会新生成一个活动实例。
singTop:启动活动时如果该活动已经在栈顶,则不会新生成该活动。
singInstence:用该模式启动的activity是单例的,并且运行在独立的activity栈中,该栈中不存在其他activity.
3、activity中intent匹配规则?
显示启动activity很简单,只要
Intent intent = new Intent(xx.this,yy.class);
startActivity(intent);
就可以调到指定的activity。隐式启动activity需要Intent加入匹配规则,Action、data、category
一个过滤器可以包含0-n个Action,如果被启动的activity添加了action规则,Intent需要指定同样的action。
一个过滤器可以包含0-n个category,如果被启动的activity添加了多个category,Intent只要指定其中一个category就可以。
一个过滤器可以包含0-n个data,每个data可以定义一个mimitype和一个uri结构体
URI结构体由
<scheme>://<host>:<port>/<path>组成
a.当Intent中没有包含任何URI和MIMETYPE时,只有过滤器没有定义任何URI和MIMETYPE时才能通过测试.
b.当Intent只包含URI没有包含MIMETYPE时,只有Intent中的URI匹配过滤器的URI且过滤器没有定义MIMETYPE时通过测试.
c.当Intent只包含MIMETYPE时,只有Intent中的MIMETYPE匹配过滤器的MIMETYPE且过滤器没有定义URI时通过测试.
d.当Intent同时包含URI和MIMETYPE时,这时进行两部分测试,一是测试Intent中的MIMETYPE和过滤器中的MIMETYPE是否匹配,二是测试URI是否匹配,如果过滤器没有定义URI,
那么当Intent中的URI包含"file:"或"content:"时通过测试.特别注意,如果过滤器有定义URI,即使Intent中的URI包含"file:"或"content:"也不能通过测试,必须匹配才行.
Intent内容设置:
设置action使用setAction
设置category使用addCategory,可以增加多个
单独设置URI使用setData
单独设置MIMETYPE使用setType
同时设置URI和MIMETYPE使用setDataAndType