欢迎来到天天文库
浏览记录
ID:36192872
大小:125.52 KB
页数:17页
时间:2019-05-07
《activity学习心得介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android系统学习心得Activity概念及相关应用一、Activity介绍Activity是Android中的最基本的组件,也是我们最常用的组件,一般情况下,一个Activity就代表一个屏幕或者说是窗口,它包含一个或多个视图(View),我们能够与之进行交互。二、Activity的状态间的转换及生命周期在android中,Activity拥有四种基本状态:1.Active/Runing一个新Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。2.P
2、aused当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。3.Stoped当Activity被另外一个Activity覆盖、失去焦点并不可见时处于Stoped状态。4.KilledActivity被系统杀死回收或者没有被启动时处于Killed状态。当一个Activity实例被创建、销毁或者启动另外一个Activity时,它在这四种状态之间进行转换,这种转换的发生依
3、赖于用户程序的动作。下图说明了Activity在不同状态间转换的时机和条件:如上所示,我们可以决定一个Activity的“生”,但不能决定它的“死”,也就时说我们可以启动一个Activity,但是却不能手动的“结束”一个Activity。当你调用Activity.finish()方法时,结果和用户按下BACK键一样:告诉ActivityManager该Activity实例完成了相应的工作,可以被“回收”。该Activity被栈弹出,原栈下一层的Activity被Restart。相关的操作函数如下:pro
4、tectedvoidonCreate(BundlesavedInstanceState)protectedvoidonStart()protectedvoidonResume()protectedvoidonPause()protectedvoidonStop()protectedvoidonRestart()protectedvoidonDestroy()以A、B两个界面为例,介绍以上函数的调用情况:1、新建A时:A:onCreate()àA:onStart()àA:onResume();2、由AàB
5、时,A:onPause()àB:onCreate()àB:onStart()(此时B可见)àB:onResume()àA:onStop()(此时A不可见)/(A依然可见时,则不stop)1、BàA时:此时分两种情况,一是B关闭返回A,二是B直接跳到A第一种情况,类似于按下Back键,执行情况如下B:finish()àB:onPause()àA:onRestart()àA:onStart()àB:onStop()àB:onDestroy();第二种情况下,系统重新创建了一个A的对象,并压入栈中。B:onP
6、ause()àA:onCreate()àA:onStart()àA:onResume()àB:onStop()(此时B不可见)/(B依然可见时,则不stop)ps:当按下HOME键时,则是进入HomeScreen所在的TASK中,故按下BACK键也不会回到原TASK的Activity,此时在应用程序中,再次点击应用的图标,则会回到原TASK栈顶的Activity下。操作步骤如BàHomeàB。Activity在onPause(),onStop()情况下,系统是可以酌情收回资源的。三、Activity的L
7、aunchMode和TaskAffinity属性相关LaunchMode加载模式1、Activity有四种加载模式:standard(默认),singleTop,singleTask和singleInstance。standard:默认加载方法,栈中已有AB,如果B通过Intent跳到A,则会新创建一个实例A压入栈,形成ABA。singleTop:如果某个Activity的Launchmode设置成singleTop,那么当该Activity位于栈顶的时候,再通过Intent跳转到本身这个Activit
8、y,则将不会创建一个新的实例压入栈中。ABCD,D跳到D,则还是ABCD这个模式,降低了位于栈顶时的一些重复开销,更避免了一些奇异的行为(想象一下,如果在栈顶连续几个都是同样的Activity,再一级级退出的时候,这是怎么样的用户体验...),很适合一些会有更新的列表Activity展示。一个活生生的实例是,在Android默认提供的应用中,浏览器(Browser)的书签Activity(BrowserBookmarkPage),就用的是s
此文档下载收益归作者所有