1.Activity:它是一种包含用户界面的组件,主要用于和用户进行交互;
  Activity的用法与步骤:
    1)新建类MyActivity.java,继承Activity类;
    2)创建布局文件myactivity_layout.xml;
    3)在类MyActivity中重写 onCreate() 方法,并使用 setContentView() 方法指定当前Activity的布局文件为myactivity_layout.xml;
    4)在AndroidMenifest.xml配置文件中注册MyActivity;
    可以使用 requestWindowFeature(Window.FEATURE_NO_TITLE) 方法隐藏标题栏;
2.在活动中使用菜单(Menu):
  1)在 res 目录下创建 menu 目录;
  2)在 menu 目录中创建菜单文件 menu.xml,并在menu.xml文件中添加菜单选项(item);
  3)在类MyActivity中重写 onCreateOptionMenu() 方法,并使用 getMenuInflater().inflate()方法指定菜单文件;
  4)重写 onOpntionsItemSelected() 方法,编写每个菜单选项的响应事件;
  注:若 onCreateOptionMenu() 方法返回值设为 false ,则菜单无法显示;
3.Activity的销毁:使用 finish() 方法,效果如同设备上的 Back 键;
4.intent:用于 android 中个组件直接的交互及数据传递,它主要分为两种:显示Intetn和隐式Intent;
  1)显示Intent例子:Intent有多个构造函数的重载,其中一个是Intent(Context packageContent, Class<?> cls), 第一个参数Context为启动活动的上下文,第二个参数是指定要启动的目标活动。然后使用 Activity 的 startActivity() 方法启动新的活动;
  2)隐式Intent:不明确指出要启动的Activity,而是指定了一系列抽象的action和category等信息,然后交由系统去分析这个intent,并找出合适的Activity来启动;
5.intent传递数据:
  1)基本类型数据:发送端通过 intent.putExtra("key", typeValue) 方法想intent传入数据,接收端通过 intent.getTypeExtra("key") 方法获取数据,如 getIntExtra()等;
  2)引用类型数据:发送的对象需实现 Serializable 接口,然后创建 Bundle类对象 bundle, 调用 bundle.putSerializable("key", object) 将对象放入bundle内,再通过 intent.putExtras(bundle) 方法将bundle传入。接收端可以通过 intent.getSerializableExtra("key") 方法获取引用对象(需强转);
6.通过intent返回数据:发送端若想接收接收端返回的数据,在启动 Activity 的时候应该调用 startActivityForResult(intent, requestCode) 方法,接收端将需要返回的数据放入intent中,然后调用 setResult(resultCode, intent) 方法来设置结果,发送端通过重写 onActivityResult(requestCode, resultCode, intent) 方法来获取和处理返回的数据;
7.android使用 Task (任务)来管理 Activity ,一个 Task 就是一组存放在栈里的 Activity 集合,这个栈也称为返回栈;
8.Activity的生命周期:
  活动状态:
    1)运行状态:当 Activity 处于返回栈栈顶是就是运行状态;
    2)暂停状态:当 Activity 不再处于栈顶,但仍然可见时,就进入暂停状态;s
    3)停止状态:当 Activity 不再处于栈顶,并且完全不可见时,就进入停止状态,这种状态下的 Activity 随时可能被系统回收;
    4)销毁状态:当一个 Activity 从返回栈栈顶移除的时候,就进入销毁状态;
  生存期:
    1)onCreate(): Activity 第一次被创建时执行;
    2)onStart(): 该方法在 Activity 由不可见变为可见的时候调用;
    3)onResume(): Activity 准备好与用户交互的时候调用;
    4)onPause(): 在系统准备启动或回复另一个 Activity 的时候调用,通常在该方法中释放一些消耗CPU的资源,以及保存一些关键数据;
    5)onStop(): 在 Activity 完全不可见的时候调用;
    6)onDestroy(): Activity 被销毁之前调用;
    7)onRestart(): Activity 在由停止状态变为运行状态之前调用;
  活动的三种生存期:
    1)完整生存期:在 onCreate() 方法和 onDestroy() 方法之间所经历的时期;
    2)可见生存期:在 onStart() 方法和 onStop() 方法之间所经历的时期;
    3)前台生存期:在 onResume() 方法和 onPause() 方法之间所经历的时期;
9.当 Activity 处于停止状态时,有可能会因为系统内存不足而被系统回收,此时如果其他活动返回到该 Activity 时, 该 Activity 会被重新创建(执行onCreate()方法),之前 Activity 的一些临时数据和状态将被销毁,影响用户体验。要想在系统回收 Activity 之前将一些重要的临时数据保存下来,可以重写 Activity 的 onSaveInstanceState() 方法,
该方法会在被回收之前调用,它携带了一个 Bundle 参数,可以将需要的数据放入这个 Bundle 内, 然后当下一次 Activity 被创建时,可以从 onCreate() 方法中的 Bundle参数中获取到之前的数据。
10.Activity 的启动模式: standard, singleTop, singleTask, singleInstance,可以在配置文件 AndroidMenifest.xml中通过指定<activity>标签的 launchModel属性来设置启动模式;
  1)standard: 默认启动模式,每启动一次 Activity ,就会创建一个新的栈顶 Activity 实例并压入栈顶;
  2)singleTop: 若要启动的 Activity 已处于栈顶,则不会再创建新的 Activity 实例,直接启动栈顶的 Activity;
  3)singleTask: 该模式下启动 Activity 之前先在 返回栈中查找 是否已经存在该 Activity 的实例,若存在,则直接使用该实例,并将其上面的其他 Acticity 实例全部出栈;
  4)singleInstance: 该模式下的 Activity 启动时会启用一个新的返回栈来管理这个活动,这个新的返回栈能够被其他应用访问,因此能够达到共享 Activity 实例的目的;
11.管理应用中 Activity 的技巧:
  1)可以创建一个基础活动 BaseActivity, 它继承自基类 Activity,然后让其他所有的 Activity 都继承 BaseActivity;
  2)重写 BaseActivity 中的 onCreate() 方法,写上 Log.d("BaseActivity", this.getClass.getSimpleName), 这样当打开任何一个 Activity 时,都会打印该 Activity 的名称,方便开发时快速找到当前的 Activity;
  3)创建一个 Activity 管理类 ActivityCollector, 用于管理应用中的 Activity,其中包括 addActivity()、removeActivity()、finishAll()等方法;
  4)在 BaseActivity 的 onCreate() 方法中编写 ActivityCollector.addActivity(this),这样每次创建的 Activity 都会被添加到管理类 ActivityCollector 中;
  5)在 BaseActivity 的 onDestroy() 方法中编写 ActivityCollector.removeActivity(this),这样每当 Activity 销毁时都会被移除出到管理类 ActivityCollector;
  6)若想在任何一个 Activity 中退出整个程序(即销毁所有 Activity),则可以调用 ActivityCollector.finishAll() 方法来退出;

Android--Activity的更多相关文章

  1. Android:Activity+Fragment及它们之间的数据交换.

    Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...

  2. Android Activity launchMode研究

    Android Activity launchMode研究 Activity的Launch mode一共有四种: standard, singleTop, singleTask, singleInst ...

  3. android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...

  4. Android Activity的生命周期简单总结

    Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ...

  5. Android Activity返回键控制的两种方式

    Android Activity返回键监听的两种方式 1.覆写Activity的OnBackPressed方法 官方解释: Called when the activity has detected ...

  6. Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  7. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

  8. Android Activity的加载模式和onActivityResult方法之间的冲突

    前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其 ...

  9. Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法:

    Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法: 1. 基本作用: Activity的 onSaveInstan ...

  10. Android activity的回传数据

    package com.example.myact3; import android.content.Intent; import android.os.Bundle; import android. ...

随机推荐

  1. 浅谈OpenGL变换矩阵

    OpenGL中使用的矩阵全为列向量为主的矩阵. 参考OpenGL变换网站为  http://www.songho.ca/opengl/gl_transform.html 1.什么是GL_MODELVI ...

  2. Linux:去除认证,加速 SSH登录

    编辑配置文件 /etc/ssh/sshd_config vim /etc/ssh/sshd_config 找到 UseDNS选项,如果没有注释,将其注释 #UseDNS yes 添加 UseDNS n ...

  3. 转:RealThinClient LinkedObjects Demo解析

    这个Demo源码实现比较怪,有点拗脑,原因估是作者想把控件的使用做得简单,而封装太多. 这里说是解析,其实是粗析,俺没有耐心每个实现点都查实清楚,看源码一般也就连读带猜的. 这个Demo表达出的意义, ...

  4. IMS Global Learning Tools Interoperability™ Implementation Guide

    Final Version 1.1 Date Issued:            13 March 2012 Latest version:         http://www.imsglobal ...

  5. js 更改head的title

    使用document.title = "hello"; 不能使用 $("title").text("dd");或者            $ ...

  6. ecshop的特点,持续加新

    一.目录文件结构 入口文件index.php,define('IN_ECS', true); 只有为true时才可以进入. 首先加入init.php,在这个文件里: @ini_set('memory_ ...

  7. c++学习笔记——构造函数

    构造函数定义:每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数. 需要注意的几点: 1:构造函数不能被声明为const的,当我们创 ...

  8. VC++ 关于 ON_UPDATE_COMMAND_UI 相关的作用.

    ON_COMMAND_RANGE(ID_SORTING_GROUPBYTYPE, ID_SORTING_SORTBYACCESS, OnSort) ON_UPDATE_COMMAND_UI_RANGE ...

  9. centos7.2下编译安装git

    centos最新的7.2版本,git居然是1.8,而最新的git版本是2.9 差的太多了,何况git2.0后有大更新.于是,我决定编译安装.中间有一点小破折,记录一下,备忘. 1,下载最新的源码,网址 ...

  10. JNI Local Reference Changes in ICS

    [This post is by Elliott Hughes, a Software Engineer on the Dalvik team. — Tim Bray] If you don’t wr ...