第12天 Android Activity学习 1

  次阅读 来源:互联网(转载协议) 2016-01-14 10:27 我要评论(0)

Activity通常是学习Android写demo时遇到的第一个类,知名程度可以与经典的打影Hello World”相媲美,毕竟在Android中即使想在界面上显示一个“Hello World”,也必须先创建Activiy子类在其onCreate方法中创建视图,在视图上添加文字“Hello World”。哈哈,接下来就来看看Android 的四大组件使用频率最高的Activity吧。

一、Activity是什么?

首先会提出一个问题,Activity到底是什么?

如果回答Activity四大组件之一也是使用频率最高的组件,这个答案显然令人不满意,那Activiyt到底是什么呢?来看看官方的解释:

Activity是与Android app提供交互的重要组件。Activity负责创建一个窗口,在这个窗口基础上开发者可以通过setContentView添加UI,Activity默认全屏显示也可以作为浮动窗口显示。

Activity存在的目的是为了降低耦合,把用户自定义与系统调用分离开。

例如Activity提供如下处理:

控制窗口层级与显示关系(例如当前页面有多个弹出窗口,多个Toast每个Dialog与Toat都是新的窗口)

在窗口中按照创建setContentView传递View对象创建界面。

在窗口与视图上处理触摸事件、硬键盘事件、滚轮事件。

在当前视图进行绘制、响应窗口所有事件。

控制输入法在当前窗口的显示与隐藏。

Activity是UI吗?

按我的理解不是,这个问题引出另外一个概念UI (User Interface),如果把UI粗浅的理解话搞美术的人画出来的美术作品的话,Activity相当于画架主要是对画出作品时起到支撑作用,但是并不能说画架就是画作本身。

二、Activity的生命周期

通过以下的文章与图片可以了解Activity生命周期具体有哪些,并且每一个的含义是什么,但是还是会发现有两个疑问:

疑问一:

为什么要有生命周期呢?而且为什么生命周期还要提供这么多方法呢?Android Framework层本身本身就是基于Java的难道不能只提供一个入口,例如mian函数吗?

答案是Android可以提供周期回调,可以仅提供一个入口其实进把onCreate当做入口就行了,那为什么要提供生命周期这么多回调呢?按我的理解是因为提高性能对现有的对象进行复用。

Android完全可以仅提供一个接口创建,如果当前Activity处于被遮盖的情况直接把当前Activty给杀死清理掉,但是这样会导致用户再点击回退按钮想看到之前的Acitivyt展示的页面上时,因为被遮盖时给清理掉所以要重新创建,这样消耗资源倒是小事,主要是这个过程肯定要消耗时间,而且这段时间用户也只能等待带来用户体验不好。

疑问二:

Dialog的显示与隐藏会执行Activity的哪些回调方法?

按照对Activity生命周期的理解,当Activty界面被部分遮盖的时候会执行onPause,遮盖消失时会执行onResume,但是如果写个Demo并在相应周期方法中打印log会发现Dialog的显示与隐藏不会触发任何的生命周期方法。

从现象说明了对遮盖触发Activiyt周明周期理解有误,Dialog虽然会遮盖不会触发生命周期方法。但是有些文章中给出的效果图中能看到仅仅一个Dialog浮现在手机屏幕中间,但是onPause与onResume也执行了。这是因为遮盖的Dialog形状的界面其实是Activity 其style格式设置为theme.Dialog,即Activity以Dialog形式仅占据屏幕的中间位置显示并不占满全屏。新的Activity的遮盖当前Activity当然会触发onPause与onResume。

两分钟彻底让你明白Android Activity生命周期(图文)!

http://blog.csdn.net/android_tutor/article/details/5772285

Managing the Activity Lifecycle

http://developer.android.com/training/basics/activity-lifecycle/index.html

Starting an Activity

http://developer.android.com/training/basics/activity-lifecycle/starting.html

Pausing and Resuming an Activity

http://developer.android.com/training/basics/activity-lifecycle/pausing.html

Stopping and Restarting an Activity

http://developer.android.com/training/basics/activity-lifecycle/stopping.html

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...