【译】Android系统简介—— Activity
续上一篇,继续介绍Android系统。上一篇: 【译】Android系统简介
本文主要介绍构建Android应用的一些主要概念:
Activity
Activity是应用程序中一个单独的有UI的页面(screen),例如:在email应用中,会有一个activity用来显示email的列表,还有activity用来显示具体的email。通常来说,只要有用户交互的应用,就会包含至少一个activity。
一个应用可以包含多个activity,每个activity之间可通过intent进行交互,关于intent会在本文后面进行介绍。
一个activity一般继承自android.app.Activity, 所有的activity都被onXX()方法管理着:
- onCreate() - 设置activity的初始化方法
- onStart() - 当activity变可见的时候会调用此方法;当activity停止并重启后,会再次调用此方法;
- onResume() - 当activity可见,并准备接收和处理用户输入时调用此方法;
- onPause() - 当activity将要失去焦点的时候,会调用此方法;此方法会快速的保存为提交的数据,停止CPU密集计算,为activity进入后台运行而准备;
- onStop() - activity失去焦点,此方法被调用。用来释放应用程序使用的资源;
- onRestart() - 当activity停止后,被再需要的时候,调用此方法;此方法会恢复之前activity的状态;
- onDestroy() - 当activity被注销的时候,调用此方法;代表activity生命周期结束;
activity生命周期:
activity生命周期示例
在strings.xml添加
<string name="CodeProjectWebURL">http://www.codeproject.com</string>
重写activity的这些方法:
public class FirstActivity extends Activity { private WebView oWebView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
oWebView = (WebView)findViewById(R.id.webView);
oWebView.loadUrl(getString(R.string.CodeProjectWebURL));
} /** Called when the activity is about to become visible. */
@Override
protected void onStart() {
super.onStart();
Toast.makeText(getApplicationContext(), "Inside onStart", Toast.LENGTH_LONG).show();
} /** Called when the activity has become visible. */
@Override
protected void onResume() {
super.onResume();
Toast.makeText(getApplicationContext(), "Inside onResume", Toast.LENGTH_LONG).show();
} /** Called when another activity is taking focus. */
@Override
protected void onPause() {
super.onPause();
Toast.makeText(getApplicationContext(), "Inside onPause", Toast.LENGTH_LONG).show();
} /** Called when the activity is no longer visible. */
@Override
protected void onStop() {
super.onStop();
Toast.makeText(getApplicationContext(), "Inside onStop", Toast.LENGTH_LONG).show();
} /** Called just before the activity is destroyed. */
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getApplicationContext(), "Inside onDestroy", Toast.LENGTH_LONG).show();
} }
Layout添加WebView控件:
<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true" />
运行效果:
在onCreate()方法调用后,onStart()方法便被调用,通过Toast的消息我们可以看到;
当其他的activity被激活时(比如按home键),当前的activity就会调用onPause()方法,然后onStop()方法立即也被调用;
onResume()被调用的场景:当应用正在运行时,来了个电话,当前应用就会失去焦点(onPause, onStop),电话应用就会获得焦点;当打完电话后,应用又重新获得焦点,这时候onResume()方法被调用;
当activity结束(调用onFinish方法)或者系统为了内存空间临时销毁activity实例的时候,onDestroy()方法被调用。
PS:还是需要把activity, service, content provider, intent, fragement分拆成不同文章,实在是有点长
备注:
1. 本文在翻译过程中有所删减;
2. 关键词汇没有翻译,以免混淆理解;
3. 原文:http://www.codeproject.com/Articles/802449/Article
本文版本历史:
初始版 2014.08.31
【译】Android系统简介—— Activity的更多相关文章
- "浅谈Android"第一篇:Android系统简介
近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的 ...
- Android系统简介(中):系统架构
Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries & Android Runtime.Linux ...
- Android系统简介(上):历史渊源
上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件 ...
- 【译】Android系统简介
简介 本文主要介绍Android的基础知识和体系结构,本文主题: 简介什么是Android,为什么开发者需要关注Android: Android体系结构(如Linux Kernel, Librari ...
- Android系统用于Activity的标准Intent
1 根据联系人ID显示联系人信息 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); //显示联系人信息 int ...
- Android系统编程入门系列之加载界面Activity
上回说到应用初始化加载及其生命周期,在Android系统调用Applicaiton.onCreate()之后,继续创建并加载清单文件中注册的首个界面即主Activity,也可称之为入口界面.主Acti ...
- Android系统中标准Intent的使用
Android系统用于Activity的标准Intent 1.根据联系人ID显示联系人信息= Intent intent=new Intent(); intent.setAction(Intent.A ...
- 【Android 系统开发】 Android 系统启动流程简介
作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...
- Android属性系统简介
1.简介 在android 系统中,为统一管理系统的属性,设计了一个统一的属性系统.每个属性都有一个名称和值,他们都是字符串格式.属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息 ...
随机推荐
- foundation框架之反射机制
概念 例子 一.概念 反射:根据字符串实例话对象或者调用方法 // // main.m // 反射机制 // // Created by apple on 14-3-28. // Copyright ...
- Java程序员必备的 15框开发工具
15款Java程序员必备的开发工具 如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同 ...
- POJ 1751 Highways (最小生成树)
Highways Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
It is a security issue, so to fix it simply do the following: Go to the Oracle folder. 1- Right Clic ...
- asp.net EF model中的默认值设置
在做数据库规划时,通常会规划一些系统字段,也就是由数据库本身自行指定默认值到这个字段上,创建新的“创建时间(CreateDate)”字段就会常常这样设计. 如果希望能有默认值,且让.net 程序在新增 ...
- IntelliJ IDEA 集成Tomcat后找不到HttpServlet问题(2015年06月13日)
今天第一次用IntelliJ IDEA集成Tomcat做东西玩,在IntelliJ IDEA中配置好Tomcat之后,开始写Servlet,结果却找不到HttpServlet类,原因就是Intelli ...
- 怎么手写Ajax实现异步刷新
所谓的异步刷新,就是不刷新整个网页进行更新数据. 只有通过js才能实现Ajax,进而实行异步刷新 表单提交数据和Ajax提交数据的区别:表单提交是提交的整个页面中的数据,提交数据之后会抛弃之前的页面( ...
- Js中把JSON字符串转换为JSON对象(eval()、new Function())
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- 通信行业OSS支撑系统软件研发思考
一般的,对所谓大型.通信行业.OSS支撑软件系统,我们可宏观定义以下几点: 以年计的研发周期 以几十人计的研发团队 以百计的业务菜单功能点 以千计的数据库表 以万计的业务术语指标 以亿计的数据表记录 ...
- 10款让人惊叹的HTML5/jQuery图片动画特效
1.HTML5相册照片浏览器 可连接Flickr照片服务 以前我们经常会分享一些jQuery相册浏览插件,效果不错,实用性也很强.不过如果能利用HTML5来实现相册浏览器,那么相册浏览效果肯定会更加炫 ...