- 如果你需要在XML中引用一个id,就使用@id/id_name这种语法,而如果你需要在XML中定义一个id,则要使用@+id/id_name这种语法
- 如果你的应用程序中没有声明任何一个Activity作为主Activity,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般是作为第三方服务供其他应用在内部进行调用的。
- Kotlin编写的Android项目在app/build.gradle文件的头部默认引入了一个kotlin-android-extensions插件,这个插件会根据布局文件中定义的控件id自动生成一个具有相同名称的变量,我们可以在Activity里直接使用这个变量,而不用再调用findViewById()方法了
- 重写onCreateOptionsMenu()方法可以生产菜单按钮
- 在重新onOptionsItemSelected()方法可以对按钮的事件进行控制
- 还是右击包→New→Activity→Empty Activity,可以快速创建一个activity自动生成layout文件且manifest自动添加注册
- Kotlin中SecondActivity::class.java的写法就相当于Java中SecondActivity.class的写法
- 每个Intent中只能指定一个action,但能指定多个category
- Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中
- 通过startActivityForResult() 和onActivityResult()方法返回数据给上一个Activity
- 栈是一种后进先出的数据结构
- Bundle可对对象进行操作,而Intent是不可以。Bundle相对于Intent拥有更多的接口,用起来比较灵活,但是使用Bundle也还是需要借助Intent才可以完成数据传递总之,Bundle旨在存储数据,而Intent旨在传值。
- Activity状态 :
①运行状态:当一个Activity位于返回栈的栈顶时,Activity就处于运行状态
②暂停状态:当一个Activity不再处于栈顶位置,但仍然可见时,Activity就进入了暂停状态
③停止状态:当一个Activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态
④销毁状态:一个Activity从返回栈中移除后就变成了销毁状态
-
Activity生命周期的示意图
-
Activity中还提供了一个onSaveInstanceState()回调方法,这个方法可以保证在Activity被回收之前一定会被调用
-
启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance,可以在AndroidManifest.xml中通过给标签指定android:launchMode属性来选择启动模式
-
standard模式的原理
-
singleTop模式的原理
-
singleTask模式
-
singleInstance模式
-
Kotlin中的javaClass表示获取当前实例的Class对象,相当于在Java中调用getClass()方法(getClass().getSimpleName())
-
单例存放activity的类,然后在BaseActivity里面调用
-
killProcess()方法用于杀掉一个进程,它接收一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。需要注意的是,killProcess()方法只能用于杀掉当前程序的进程,不能用于杀掉其他程序。
-
with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。
-
首先run函数通常不会直接调用,而是要在某个对象的基础上调用;其次run函数只接收一个Lambda参数,并且会在Lambda表达式中提供调用对象的上下文。其他方面和with函数是一样的,包括也会使用Lambda表达式中的最后一行代码作为返回值返回
-
apply函数和run函数也是极其类似的,都要在某个对象上调用,并且只接收一个Lambda参数,也会在Lambda表达式中提供调用对象的上下文,但是apply函数无法指定返回值,而是会自动返回调用对象本身
-
实际使用方参考
-
因而静态方法非常适合用于编写一些工具类的功能,因为工具类通常没有创建实例的必要,基本是全局通用的。
-
Kotlin规定,所有定义在companion object中的方法都可以使用类似于Java静态方法的形式调用
-
@JvmStatic注解
@JvmStatic注解只能加在单例类或companion object中的方法上 加上以后不管是在Kotlin中还是在Java中都可以调用
- 顶层方法指的是那些没有定义在任何类中的方法,比如我们在上一节中编写的main()方法。Kotlin编译器会将所有的顶层方法全部编译成静态方法,因此只要你定义了一个顶层方法,那么它就一定是静态方法