1、建立、配置和使用Activity ·创建Activity的要点 ①创建一个Activity需要实现一个或多个方法 必须复写onCreate()方法,该方法会在Activity创建时被回调 ②每一个Activity都需要在AndroidManifest.xml文件当中进行配置;
·配置Activity 配置Activity 时通常指定如下几个属性: name: 指定该Activity 的实现类的类名。 icon: 指定该Activity 对应的图标。 label: 指定该Activity 的标签。 exported: 指定该Activity 是否允许被其他应用调用。 launchMode: 指定该Activity 的加载模式, 该属性支持standard 、 singleTop 、singleTask 和singlelnstance 这4 种加载模式。
·启动、关闭Activity Activity 启动其他Activity 有如下两个方法: ① startActivity(Intent intent): 启动其他Activity 。 ② startActivityForResult(ntent intent, int requestCode): 以指定的请求码( requestCode )启动Activity , 而且程序将会获取新启动的Activity 返回的结果(通过重写onActivityResult(…)方法来获取)。 Android 为关闭Activity 准备了如下两个方法: ① finish(): 结束当前Activity 。 ② finishActivity(int requestCode) : 结束以startActivityForResult(lntent intent, int requestCode)方法启动的Activity 。
2、Activity 的生命周期与加载模式 ·Activity 的生命周期,Activity 大致会经过如下4 种状态。 ① 运行状态:当前Activity 位于前台,用户可见, 可以获得焦点。 ② 暂停状态:其他Activity 位于前台, 该Activity 依然可见, 只是不能获得焦点。 ③ 停止状态:该Activity 不可见,失去焦点。 ④ 销毁状态:该Activity 结束,或Activity 所在的进程被结束。
·在Activity 的生命周期中,如下方法会被系统回调。 onCreate(Bundle savedStatus):创建Activity 时被回调->onStart(): 启动Activity 时被回调->onRestart(): 重新启动Activity 时被回调->onResume() : 恢复Activity 时被回调->onPause(): 暂停Activity 时被回调->onStop(): 停止Activity 时被回调->onDestroy(): 销毁Activity 时被回调。
·Activity的4种加载模式 standard: 标准模式,这是默认的加载模式。 singleTop : Task 栈顶单例模式。 singleTask: Task 内单例模式。 singlelnstance: 全局单例模式。
3、Fragment详解 ·Fragment的特征 ① Fragment总是作为Activity界面的组成部分。Fragment可调用 getActivity()方法获取它所在的Activity,Activity可调用FragmentManager的findFragmentById()或findFragmentByTag()方法来获取Fragment。 ② 在Activity运行过程中,可调用FragmentManager的add()、remove()、replace()方法动态地添加、删除或替换Fragment。 ③ 一个Activity可以同时组合多个Fragment;反过来,一个Fragment也可被多个Activity复用。 ④ Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。
·Fragment 管理与Fragment 事务 Activity 管理Fragment 主要依靠FragmentManager。FragmentManager 可以完成如下几方面的功能: ①使用findFragmentByld()或findFragmentByTag()方法来获取指定Fragment 。 ②调用popBackStack()方法将Fragment 从后台栈中弹出(模拟用户按下BACK 按键)。 ③调用addOnBackStackChangeListener()注册一个监听器, 用于监听后台栈的变化。 ④如果需要添加、删除、替换Fragment, 则需要借助于FragmentTransaction 对象,FragmentTransaction 代表Activity 对Fragment 执行的多个改变。 FragmentTransaction也被翻译为Fragmentation事务。与数据 库事务代表了对底层数组的多个更新操作;而Fragment 事务则代 表了Activity对Fragment 执行的多个改变操作。
·Fragment生命周期 与Activity 类似, Fragment 也存在如下状态。 运行状态: 当前Fragment 位于前台,用户可见,可以获得焦点。 暂停状态: 其他Activity 位于前台,该Fragment 依然可见,只是不能获得焦点。 停止状态: 该Fragment 不可见, 失去焦点。 销毁状态: 该Fragment 被完全删除, 或该Fragment 所在的Activity 被结束。
4、Intent属性、过滤器和传递数据 ·Intent对象简述 ①android 的应用程序包含三种重要组件:Activity、Service、 BroadcastReceiver,应用程序采用了一致的方式来启动它们——都是依靠 Intent 来启动的,Intent 就封装了程序想要启动程序的意图。不仅如此,Intent 还可用于与被启动组件交换信息。 使用 Intent 启动不同组件的方法 Activity : startActivity(Intent intent) startActivityForResult(Intent intent,int requestCode) ②Intent 对象大致包含 Component、Action、Category、Data、Type、Extra 和 Flag 这 7 种属性 ③其中 Component 用于明确指定需要启动的目标组件,而 Extra 则用于“携带”需要交换的数据
·Intent的属性及intent-filter配置 ①Component属性 Intent 的 Component 属性需要接受一个 ComponentName 对象; 指定 Component 属性的 Intent 已经明确了它将要启动哪个组件,因此这种 Intent 也被称为显式 Intent,没有指定 Component 属性的 Intent 被称为隐式 Intent; 隐式 Intent 没有明确指定要启动哪个组件,应用将会根据 Intent 指定的规则去启动符合条件的组件,但具体是哪个组件则不明确。 ②Action、Category 属性与 intent-filter 配置 Action 要完成的只是一个抽象动作,这个动作具体由哪个组件(或许是 Activity,或许是 BroadcastReceiver)来完成,Action 这个字符串本身并不管。 <intent-filter … ./>元素是AndroidManifest.xml 文件中<activity…I>元素的子元素。 < action…/ >、< category…/ >子元素的配置非常简单,它们都可以指定android:name 属性,该属性的值就是一个普通的字符串。
③指定Action、Category调用系统Activity Intent 代表了启动某个程序组件的“意图”,实际上 Intent 对象不仅可以启动本应用内程序组件,也可以启动 android 系统的其他应用程序组件,包括系统自带的程序组件——只要权限允许。
④ Data、Type 属性与 intent-filter 配置 Data 属性通常用于向 Action 属性提供操作的数据。 Data 属性与 Type 属性的关系比较微妙,这两个属性会互相覆盖,如果希望 Intent 既有 Data 属性,也有 Type 属性,则应该调用 Intent 的 setDataAndType()方法。
⑤Intent 的 Extra 属性通常用于在多个 Action 之间进行数据交换,Intent 的Extra 属性值应该是一个 Bundle 对象,Bundle 对象就像一个 Map 对象,它可以存入多个 key-value 对,这样就可以通过Intent 在不同 Activity之间进行数据交换了。
⑥latent 的Flag 属性用于为该Intent 添加一些额外的控制旗标, Intent 可调用addFlags()方法来添加控制旗标。