Android学习笔记(二)
- Intent:它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
- 显性Intent
- 语法:
Intent(Context packageContext,Class<?>cls)
,需要传入两个参数,第一个参数Context要求提供一个启动活动的上下文,第二个参数Class指定想要启动的目标活动。
- 启动:通过
startActivity()
方法启动活动,它接收一个Intent参数。
- 隐形Intent
- 通过指定action和category等信息,交由系统去分析这个Intent,找出适合的活动去启动。
- 在AndroidManifest.xml中的< activity >标签下配置< intent-filter >的内容,指定活动能够相应的action和category。
- 每个Intent中只能指定一个action但是却能指定多个category。
- 通过在< intent-filter >标签中配置< data >标签,用于更精确地指定当前活动能相应什么类型的数据。
- android:scheme 用于指定数据协议部分
- android:host用于指定数据的主机名
- android:port用于指定数据的端口部分
- android:path用于指定主机名和端口之后的部分
- android:minmeType用于指定可以处理的数据类型,允许使用通配符。
- 向下一个活动传递数据
- 用
putExtra()
将想要传递的数据暂存在Intent中,需要传入两个参数,第一个参数是键,用于后面从Intent中取值;第二个参数是要传递的数据。
- 通过
getIntent()
方法获取启动该活动的Intent。
- 根据传递的数据不同使用不同的获取方法,字符串通过
getStringExtra()
方法获取;如果是整形,通过getIntExtra()
方法实现;如果是布尔型数据,则使用getBooleanExtra()
方法获取。
- 返回数据给上一个活动
-
startActivityForResult()
方法用于启动有返回数据的活动,需要传入两个参数,第一个参数是Intent,第二个参数是请求码,用于在之后的回调中判读数据来源。
- 通过
setResult()
方法返回数据,需要传入两个参数,第一个参数用于向上一个活动返回处理结构,一般只使用RESULT_OK或者RESULT_CANCELED;第二个参数则是把有数据的Intent传递回去。
- 最后调用
finish()
销毁当前活动
- 在活动被销毁后会回调上一个活动onActivityResult()方法。该方法有三个参数,第一个参数requestCode,即为启动活动的请求码,第二个参数为resultCode,即我们在返回数据时传入的处理结果,第三个参数data即为带有返回数据的Intent。
- 在onActivityResult()方法中先检查requestCode的值来判断数据来源,然后通过resultCode的值来判断处理结果是否成功,最后从data中取值。
- 活动的生命周期
- 活动状态:运行状态,暂停状态,停止状态,销毁状态。
- 活动的回调方法:
-
onCreate()
:在第一次被创建的时候调用,在这个方法中完成活动的初始化操作。
-
onStart()
:在活动由不可见变为可见是被调用。
-
onResume()
在活动准备好与用户进行交互的时候调用,此时活动位于返回栈的栈顶。
-
onPause()
:在活动准备去启动或者回复另一个活动的时候调用。
-
onStop()
:这个方法在活动完全不可见的时候调用。
-
onDestroy()
:在活动销毁之前调用
-
onRestart()
:在活动有停止状态变为运行状态之前调用。
- 生存期:
- 完整生存期:在onCreat()方法和onDestory方法之间所经历的。
- 可见生存期:在onStart()方法和onStop方法之间经历的,在此期间活动对于用户总是可见的。
- 前台生存期:活动在onResume()方法和onPause()方法之间所经历的,在此期间活动总是处于运行状态,此时活动和用于是可以交互的。
- 实例涉及语法
-
android:theme
:给当前活动指定主题。
-
onSaveInstanceStare()
:该方法可用于保存活动退出时的数据,需传入一个Bundle数据,Bundle提供了一系列方法用于保存数据。