续上一篇,继续介绍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的更多相关文章

  1. "浅谈Android"第一篇:Android系统简介

    近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的 ...

  2. Android系统简介(中):系统架构

    Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries  & Android Runtime.Linux  ...

  3. Android系统简介(上):历史渊源

    上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件 ...

  4. 【译】Android系统简介

    简介  本文主要介绍Android的基础知识和体系结构,本文主题: 简介什么是Android,为什么开发者需要关注Android: Android体系结构(如Linux Kernel, Librari ...

  5. Android系统用于Activity的标准Intent

    1 根据联系人ID显示联系人信息 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW);   //显示联系人信息 int ...

  6. Android系统编程入门系列之加载界面Activity

    上回说到应用初始化加载及其生命周期,在Android系统调用Applicaiton.onCreate()之后,继续创建并加载清单文件中注册的首个界面即主Activity,也可称之为入口界面.主Acti ...

  7. Android系统中标准Intent的使用

    Android系统用于Activity的标准Intent 1.根据联系人ID显示联系人信息= Intent intent=new Intent(); intent.setAction(Intent.A ...

  8. 【Android 系统开发】 Android 系统启动流程简介

    作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...

  9. Android属性系统简介

    1.简介 在android 系统中,为统一管理系统的属性,设计了一个统一的属性系统.每个属性都有一个名称和值,他们都是字符串格式.属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息 ...

随机推荐

  1. 【Android Studio使用教程6】Execution failed for task ':×××:compileReleaseAidl'

    使用Android Studio运行项目时候,经常会报一些错,比如 Execution failed for task ':×××:processReleaseResources' Execution ...

  2. 【Android 界面效果25】android中include标签的使用

    在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过<include ...

  3. MySQL关于InnoDB的几个错误

    阿里云服务器上装有MySQL 5.6,这几天MySQL服务经常死掉,启动MySQL服务(service mysql start),却报如下错误 Starting MySQL.. ERROR! The ...

  4. Linux命令之cut

    cut:文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出.如果不指定 File 参数,cut 命令将读取标准输入.必须指定 -b.-c 或 -f 标志之一. 主要参数: -b(by ...

  5. FreeBSD 路由详解

    在同一个局域网上的计算机是直接连通的,但是不同的网络上的计算机并没有直接相连,只能通过一台特殊的专用计算机 -路由器来完成连通.路由器连接有多个网络界面,每一个网络界面连接到一个相应的网络上,具有一个 ...

  6. hdu 4412 利用单调性的动态规划

    思路: 这题和1227的求法一样,只不过1227是小数据,暴力下,就能进行预处理. 这题的预处理区间期望cost[i][j]需要利用单调性. 即假使以pos位置为安排的点,那么这个区间在其左边的概率为 ...

  7. sysobjects.xtype介绍

    SQL Server数据库的一切信息都保存在它的系统表格里. 在大多数情况下,对你最有用的两个列是Sysobjects.name和Sysobjects.xtype.前面一个用来列出待考察对象的名字,而 ...

  8. Android之天气APP

    做一个天气信息APP,通过读取公开发布的气象数据,提供实时天气更新,帮助用户时刻了解天气情况.通过APP可以查询到自己所处位置的天气预报,也可以通过定位系统,获取省内任意位置的气象环境信息. API接 ...

  9. $_SERVER 中重要的元素

      元素/代码 描述 $_SERVER['PHP_SELF'] 返回当前执行脚本的文件名. $_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本. $_SE ...

  10. 解密FFmpeg播放状态控制内幕

    上一篇文章(http://my.oschina.net/u/2336532/blog/400790)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的 ...