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() 方法来退出;