展会信息港展会大全

第12天 Android Activity学习 1
来源:互联网   发布日期:2016-01-14 10:27:43   浏览:1063次  

导读: Activity通常是学习Android写demo时遇到的第一个类,知名程度可以与经典的打� 癏ello World”相媲美,毕竟在Android中即使想在界面上显示一个“He...

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

Recreating an Activity

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

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港