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. ...
随机推荐
- Android BaseAdapter的使用
数据适配器有很多种,今天在这里记录一下最通用是适配器BaseAdapter. 首先说一下什么是适配器,这里我从网上找到一幅图片 由上图我们不难看出,所谓的适配器,就是数据与视图之间的桥梁.由它把数据绑 ...
- HDOJ(1242)BFS+优先队列
Rescue http://acm.hdu.edu.cn/showproblem.php?pid=1242 题意:"#"是墙,"."是路,"a&quo ...
- hdu 2196 computer
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- removeClass() 方法
删除元素的class类别用removeClass() 方法,与addClass()方法对应.具体使用如下: 如果要删除 p 标记是 cls0 的类别,可以使用如下的代码: $("p" ...
- 第三章 springboot + jedisCluster
如果使用的是redis2.x,在项目中使用客户端分片(Shard)机制.(具体使用方式:第九章 企业项目开发--分布式缓存Redis(1) 第十章 企业项目开发--分布式缓存Redis(2)) 如果 ...
- H5-考试判断题
1.所有的元素设置了浮动后都可以设置宽高. 2.行元素都不能设置宽高跟上下边距 3.所有的css样式优先级中“!important”优先级最高(及其不推荐使用) 4.改变元素的transition值, ...
- eclipse 相同变量高亮显示 颜色修改 变量着色
问题描述: 在eclipse中使用快捷键或其他原因,不小心按错了,使得变量的高亮显示没了. 1.简单的办法: 网上搜了一下,原来是Toggle Mark Occurrences (Al ...
- mysql 日志
1.error_log 记录mysql的启动关闭的信息 记录mysql服务器运行错误的信息 记录mysql的表检查或修复信息 路径:my.cnf中通过--log-error=[file_name]配置 ...
- Daily Scrum 12.5
今日完成任务: 对webservice进行学习,并将部分接口封装到webservice,没做完,明天继续.以便安卓组能够调用webservice的接口. 修复了大部分数据库改动后导致的异常,网站已可以 ...
- 【转】HTTP状态码(HTTP Status Code)
原文链接:http://www.chaoji.com/features/httpstatus.aspx 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - ...