第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!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...