第三章-activity

  1. 如果你需要在XML中引用一个id,就使用@id/id_name这种语法,而如果你需要在XML中定义一个id,则要使用@+id/id_name这种语法
  2. 如果你的应用程序中没有声明任何一个Activity作为主Activity,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般是作为第三方服务供其他应用在内部进行调用的。
  3. Kotlin编写的Android项目在app/build.gradle文件的头部默认引入了一个kotlin-android-extensions插件,这个插件会根据布局文件中定义的控件id自动生成一个具有相同名称的变量,我们可以在Activity里直接使用这个变量,而不用再调用findViewById()方法了
  4. 重写onCreateOptionsMenu()方法可以生产菜单按钮重写onCreateOptionsMenu方法
  5. 在重新onOptionsItemSelected()方法可以对按钮的事件进行控制onOptionsItemSelected
  6. 还是右击包→New→Activity→Empty Activity,可以快速创建一个activity自动生成layout文件且manifest自动添加注册
  7. Kotlin中SecondActivity::class.java的写法就相当于Java中SecondActivity.class的写法
  8. 每个Intent中只能指定一个action,但能指定多个category
  9. Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中
  10. 通过startActivityForResult() 和onActivityResult()方法返回数据给上一个Activity
  11. 栈是一种后进先出的数据结构
  12. Bundle可对对象进行操作,而Intent是不可以。Bundle相对于Intent拥有更多的接口,用起来比较灵活,但是使用Bundle也还是需要借助Intent才可以完成数据传递总之,Bundle旨在存储数据,而Intent旨在传值。
  13. Activity状态 :

①运行状态:当一个Activity位于返回栈的栈顶时,Activity就处于运行状态
②暂停状态:当一个Activity不再处于栈顶位置,但仍然可见时,Activity就进入了暂停状态
③停止状态:当一个Activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态
④销毁状态:一个Activity从返回栈中移除后就变成了销毁状态

  1. Activity生命周期的示意图Activity生命周期的示意图

  2. Activity中还提供了一个onSaveInstanceState()回调方法,这个方法可以保证在Activity被回收之前一定会被调用

  3. 启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance,可以在AndroidManifest.xml中通过给标签指定android:launchMode属性来选择启动模式

  4. standard模式的原理standard模式的原理

  5. singleTop模式的原理singleTop模式的原理

  6. singleTask模式在这里插入图片描述

  7. singleInstance模式在这里插入图片描述

  8. Kotlin中的javaClass表示获取当前实例的Class对象,相当于在Java中调用getClass()方法(getClass().getSimpleName())
    在这里插入图片描述

  9. 单例存放activity的类,然后在BaseActivity里面调用在这里插入图片描述

  10. killProcess()方法用于杀掉一个进程,它接收一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。需要注意的是,killProcess()方法只能用于杀掉当前程序的进程,不能用于杀掉其他程序。在这里插入图片描述

  11. with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。在这里插入图片描述

  12. 首先run函数通常不会直接调用,而是要在某个对象的基础上调用;其次run函数只接收一个Lambda参数,并且会在Lambda表达式中提供调用对象的上下文。其他方面和with函数是一样的,包括也会使用Lambda表达式中的最后一行代码作为返回值返回在这里插入图片描述

  13. apply函数和run函数也是极其类似的,都要在某个对象上调用,并且只接收一个Lambda参数,也会在Lambda表达式中提供调用对象的上下文,但是apply函数无法指定返回值,而是会自动返回调用对象本身在这里插入图片描述

  14. 实际使用方参考在这里插入图片描述

  15. 因而静态方法非常适合用于编写一些工具类的功能,因为工具类通常没有创建实例的必要,基本是全局通用的。

  16. Kotlin规定,所有定义在companion object中的方法都可以使用类似于Java静态方法的形式调用

  17. @JvmStatic注解

@JvmStatic注解只能加在单例类或companion object中的方法上 加上以后不管是在Kotlin中还是在Java中都可以调用

  1. 顶层方法指的是那些没有定义在任何类中的方法,比如我们在上一节中编写的main()方法。Kotlin编译器会将所有的顶层方法全部编译成静态方法,因此只要你定义了一个顶层方法,那么它就一定是静态方法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值