Android--Activity
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的更多相关文章
- Android:Activity+Fragment及它们之间的数据交换.
		Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ... 
- Android Activity launchMode研究
		Android Activity launchMode研究 Activity的Launch mode一共有四种: standard, singleTop, singleTask, singleInst ... 
- android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别
		android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ... 
- Android Activity的生命周期简单总结
		Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ... 
- Android Activity返回键控制的两种方式
		Android Activity返回键监听的两种方式 1.覆写Activity的OnBackPressed方法 官方解释: Called when the activity has detected ... 
- Android Activity和Fragment的转场动画
		Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ... 
- android Activity生命周期(设备旋转、数据恢复等)与启动模式
		1.Activity生命周期 接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ... 
- Android Activity的加载模式和onActivityResult方法之间的冲突
		前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其 ... 
- Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法:
		Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法: 1. 基本作用: Activity的 onSaveInstan ... 
- Android activity的回传数据
		package com.example.myact3; import android.content.Intent; import android.os.Bundle; import android. ... 
随机推荐
- HDOJ2222 Keywords Search-AC自动机
			Problem Description In the modern time, Search engine came into the life of everybody like Google, B ... 
- Egret中的对象池ObjectPool
			为了可以让对象复用,防止大量重复创建对象,导致资源浪费,使用对象池来管理. 对象池具体含义作用,自行百度. 一 对象池A 二 对象池B 三 字符串key和对象key的效率 一 对象池A /** * 对 ... 
- Maven pom.xml中添加指定的中央仓库
			中央仓库就是Maven的一个默认的远程仓库,Maven的安装文件中自带了中央仓库的配置($M2_HOME/lib/maven-model-builder.jar) 在很多情况下,默认的中央仓库无法满足 ... 
- WPF TextBlock文本纵向排列
			一.将TextBlock文本纵向排列输出有两种模式. 1.文字正常放置,只是纵向排列. 2.文字同样旋转90度,纵向排列. 二.详见下文实例 1.文本正常放置,纵向排列. (1)后台代码 string ... 
- information_schema系列二(列,列权限,事件,存储引擎)
			这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:COLUMNS 老规矩.查一下这个表,看一下记录,由于这个是看表 ... 
- nagios二次开发(二)---nagios和nagiosql合并与取舍
			NAGIOS做前台 上一篇本人分析了nagios和nagiosql的优缺点,根据之前的使用经验及探索.决定将nagios做为监控数据的展示层,暂称做“前台”.将nagiosql做为监控体的配置层,暂称 ... 
- Android 下拉刷新框架实现
			原文地址:http://blog.csdn.net/leehong2005/article/details/12567757 前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些 ... 
- 基于CCS3.3平台搭建DSP/BIOS系统
			本人由于换工作的原因,由ccs3.1平台下转化为ccs3.3平台.先说说本人感觉的区别,ccs3.1下的CSL库集成到DSP/BIOS内,而3.3的CSL库在DSP/BIOS下就没有体现. 1.二话不 ... 
- 修改win10打开文件资源管理器
- Android常见崩溃或闪退的问题描述及原因总结、及与性能相关的模块——持续更新
			1.nullpointer——就是使用一个对象的时候还没有对其进行初始化导致该问题 一般在何种情况下容易出现呢? (1)父窗口+子窗口同时出现的,父窗口因为某种原因消掉了,子窗口还在,操作子窗口找不到 ... 
