Activity活动
1、理解 Activity 的生命周期,掌握onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法的调用时机和用途。
- onCreate(Bundle savedInstanceState)
调用时机:当Activity第一次被创建时调用。这是Activity生命周期的第一个方法,在这个方法中,Activity会进行一些初始化操作。
用途: 初始化布局:通常会调用setContentView(int layoutResID)方法来设置Activity的用户界面布局。例如:setContentView(R.layout.activity_main)。
初始化组件:对Activity中使用的视图组件(如TextView、Button等)进行初始化,通过findViewById(int id)方法获取布局中的视图,并可以为其设置监听器等。
恢复数据:如果Activity之前被销毁且有保存的状态数据(通过onSaveInstanceState(Bundle outState)方法保存),可以从传入的savedInstanceState参数中恢复数据。例如,如果在Activity中有一个文本输入框,用户输入了部分内容,当Activity因某些原因(如屏幕旋转)被销毁重建时,可以从savedInstanceState中恢复输入框中的文本。
- onStart()
调用时机:在onCreate()方法之后调用,或者当Activity从停止状态(stopped)变为可见状态时调用。此时Activity已经可见,但还没有出现在前台,无法与用户进行交互。
用途:通常用于进行一些准备工作,使Activity可见。例如,注册广播接收器等操作。但一般不进行耗时操作,因为这可能会影响Activity显示到前台的速度。
- onResume()
调用时机:在onStart()方法之后调用,当Activity进入前台并开始与用户进行交互时调用。此时Activity位于屏幕的最前端,用户可以进行操作。
用途: 开始动画:如果Activity中有动画效果,通常在这个方法中启动动画。
恢复资源:例如恢复暂停的媒体播放等操作,确保用户与Activity交互时所有功能都能正常运行。
- onPause()
调用时机:当Activity失去焦点,即将被暂停时调用。例如,当用户点击 “返回” 按钮、启动另一个Activity或者系统内存不足需要回收资源时,当前Activity会进入暂停状态。此时Activity仍然可见,但位于后台,无法与用户交互。
用途: 保存数据:对一些需要及时保存的数据进行存储,如用户在输入框中输入的内容,防止数据丢失。 停止动画或其他资源:停止正在运行的动画、暂停媒体播放等,以释放资源。
注意:这个方法必须快速执行完毕,因为下一个Activity要等到这个方法执行完才会进入onResume()状态。
- onStop()
调用时机:在onPause()方法之后调用,当Activity不再可见时调用。例如,新的Activity完全覆盖了当前Activity,或者当前Activity被销毁时,会调用此方法。
用途: 释放资源:进行一些重量级资源的释放操作,如取消网络连接、注销广播接收器等,以避免内存泄漏。
保存数据:虽然onPause()中也会保存数据,但onStop()提供了一个额外的机会来保存更重要的数据,以防Activity被销毁。 6. onDestroy()
调用时机:当Activity被销毁时调用,这是Activity生命周期的最后一个方法。Activity被销毁可能是因为用户关闭了Activity,或者系统为了回收内存而终止了该Activity。
用途: 彻底清理资源:进行最终的资源清理工作,如关闭数据库连接、释放文件句柄等。确保在Activity销毁后不会遗留任何未释放的资源。
2、实现 Activity 之间的跳转,包括显式 Intent 和隐式 Intent 的使用。
1、显示调用:
val intent = Intent(this, SecondActivity::class.java) startActivity(intent)
2、隐式调用 需要在manifest里面配置
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="www.example.com" />
</intent-filter>
// 创建隐式 Intent
val intent = Intent()
intent.action = Intent.ACTION_VIEW
intent.data = Uri.parse("https://www.example.com")
startActivity(intent)