Android之activity总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“android的学习总结”。
Android之Activity总结
一、什么是Activity
Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道
二、Activity生命周期(生命周期方法)
由图可知,这些方法调用的顺序:
1.Activity正常启动:onCreate-> onStart-> onResume;
2.Activity被杀掉:onPause-> onStop-> onDestroy,此为一个完整的生命周期。3.中断处理:onPause-> onStop,恢复时onRestart-> onStart-> onResume;
4.如果当前Activity是半透明状态或者对话框状态:那么中断就是onPause ,恢复的时候onResume。
那么对于”Other app need memory”,就是我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证一些功能(比如电话),所以资源不足的时候也就有可能被kill掉。
方法在系统中的作用及我们应该做什么:
onCreate(创建):在这里创建界面,做一些数据的初始化工作;
onStart(可视状态): 到这一步变成“用户可见不可交互”的状态;
onResume(可交互状态):变成和用户可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);
onPause(暂停状态):到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降
低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
OnStop(停止状态):变得不可见,被下一个activity覆盖了。
onDestroy(杀死):这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉。
onPause,onstop,onDestroy,三种状态下 activity都有可能被系统杀掉。
Activity栈:Activity以栈的形式进行管理,后进先出的原则
三、Activity之间的通信
在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。
Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。
Intent是一种运行时绑定(runtime binding)机制
Intent负责对操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
在应用中,我们可以以两种形式来使用Intent:
直接Intent(应用程序内部):指定了component(组建)属性的Intent。通过指定具体的组件类,通知应用启动对应的组件。
间接Intent(应用程序之间):没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。
对于直接Intent,Android不需要去做解析,因为目标组件已经很明确。
Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml(清单)中的所有IntentFilter(意图过滤器)及其中定义的Intent,最终找到匹配的Intent。
横屏时:onConfigurationChanged(配置改变))
横屏以及出现键盘键盘时生命周期部重新开始的方法: KeyboardHidHidden/orientation/screenSize 横屏显示:landscape 竖屏显示:portrait
四大组建:activity:活动、service:服务、content provider:内容提供商、broadcast receiver:广播收音机
Activity的所有面试题
什么是Activity? 请描述一下Activity 生命周期?
两个Activity之间跳转时必然会执行的是哪几个方法?
你后台的Activity被系统 回收怎么办?如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?
如何退出Activity?如何安全退出已调用多个Activity的Application? 两个Activity之间怎么传递数据?