Android学习笔记(二)

时间:2022-02-01 16:23:35

Android学习笔记(二)

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