前言
每一个没有谈过恋爱的人到了一定的年纪想要的都是一份天真的爱情吧,但现实是那么的残酷,两个人在一起会有无数的分歧有的时候确实很无奈呀,单身的同志们享受吧,恋爱中人们也要珍惜对方呀。
activity的介绍
首先我们应该思考一个问题,我们每天都在使用android手机 ,内部的app 微信,抖音等等他是通过什么方式和我们用户交互的呢?
对于上边的问题大家会说 ,手指点一下那个app的图标 之后就可以通过屏幕做我们想做的事了呀,这么说也没毛病,屏幕中的窗口就是我们今天要说的Activity。
activity的配置
在程序中Activity都要通过配置才能被系统识别,为了使你的应用程序能够使用活动,必须在清单配置文件中声明活动已经某些属性
- 第一步需要你在Android的配置文件的Appliction节点下添加 activity 元素
<manifest ... >
<application ... >
<activity android:name=".HelloActivity" />
...
</application ... >
...
</manifest >
activity元素需要唯一的属性 name指定活动的名称,您可以添加定义活动特征的别的属性,可以在activity元素文档
activity的生命周期
对于Android的四大组件的学习最重要的便是掌握它的生命周期方法,以便在对应的方法中做处理
- onCreate():在执行这个方法的时候activity是处于创建的状态的执行的是基本的应用的启动逻辑,在activity 的生命周期中只执行一次,在这个方法执行结束之后执行的是 onStart()
/***
* 创建状态
* 该方法在activity创建的时候回调
* 在onCreate()结束之后执行的是onStart()
* 执行基本的应用启动逻辑,该逻辑在声明周期中只发生一次,
* 此方法接收savedInstanceState参数,其中是包含Activity先前保存状态的Bundle对象
*/
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
start = findViewById(R.id.startActivityId)
start.setOnClickListener {
Intent(this@MyActivity, StartActivity::class.java).let {
it.putExtra("name","myactivity")
it.putExtra("value","startActivity")
startActivity(it)
}
}
startForResult = findViewById(R.id.startActivityForresultId)
startForResult.setOnClickListener {
Intent(this@MyActivity, StartActivityForResult::class.java).let {
it.putExtra("name","myactivity")
it.putExtra("value","startActivityForResult")
startActivityForResult(it, REQUEST_CODE)
}
}
startForResultText = findViewById(R.id.startActivityForresultTextId)
var name = intent.getStringExtra("name")
onNewIntent = findViewById(R.id.onNewIntentId)
onNewIntent.setOnClickListener {
Intent(this, OnNewIntentActivity::class.java).let {
it.putExtra("onnew",name)
startActivity(it)
}
}
Log.d(TAG, "activity初次创建")
}
- onStart():在执行这个方法的时候activity是处于开始的状态的,在activity由不可见到可见的时候执行这个方法,在该方法执行结束之后执行的是onResume()
/****
* 开始状态
* 在activity变得对用户可见 这个回调包含的是直到用户变得可以和前台交互
* 在onStart()结束之后执行的是onResume()
*/
override fun onStart() {
super.onStart()
Log.d(TAG, "activity: 开始状态")
}
- onResume():执行这个方法的时候activity处于运行态,在activity变得可以和用户交互的时候执行这个方法,在该方法中实现核心功能
/****
* 在与用户交互之前的回调
* 在activity变得可以和用户交互时回调这个方法, 此时活动位于活动堆的栈定
* 在该方法中实现 核心的功能
*/
override fun onResume() {
super.onResume()
Log.d(TAG, "activity:用户交互的状态")
}
- onPause():执行这个方法的时候activity是处于暂停状态,例如在点击返回按钮的时候,从技术上讲意味着activity仍然部分可见,在该方法执行结束之后执行的是onStop或者是onResume()
/***
* 暂停状态
* 当活动失去焦点并进入暂停状态时, 系统将调用。例如,当用户点击“后退”或“最近”按钮时,就会出现此状态。从技术上讲,这意味着您的活动仍然部分可见
* 在该方法执行结束之后 执行的是 onStop()或者是onResume()
*/
override fun onPause() {
super.onPause()
Log.d(TAG, "activity:处于暂停的状态")
}
- onStop():执行这个方法的时候activity处于停止状态,这个时候activity是完全不可见的,在该方法执行结束之后回执行onDestory()或者是onRestart()
/****
* 停止状态
* 当用户不再可见该活动时, 系统将调用。之所以会发生这种情况,是因为该活动被销毁,新活动正在启动,或者现有活动进入“已恢复”状态并覆盖了已停止的活动。在所有这些情况下,已停止的活动根本不再可见。
* 在该方法执行结束之后执行的是 onRestart()或者是onDestory()
*/
override fun onStop() {
super.onStop()
Log.d(TAG, "activity:处于停止的状态")
}
- onDestory():执行这个方法的时候activity是处于销毁的状态的,在活动销毁之前会回调这个方法
/***
* 销毁状态
* 在活动被销毁之前,系统将调用此回调。
*/
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "activity:处于销毁的状态")
}
- onRestart():当处于“已停止”状态的活动即将重新启动时,系统将调用此回调。onRestart() 从活动停止时恢复其状态。 此回调之后总是 onStart()
/****
* 当处于“已停止”状态的活动即将重新启动时,系统将调用此回调。onRestart() 从活动停止时恢复其状态。
* 此回调之后总是 onStart()
*/
override fun onRestart() {
super.onRestart()
Log.d(TAG, "activity:处于重新启动的状态")
}
-
onNewIntent():该方法在activity处于singleTop,singleTask启动模式的时候在activity已经启动的情况下在此启动的时候会回调这个方法
-
onSaveInstanceState():当活动停止的时候系统会调用,onSaveInstanceState()方法 ,杀死您的活动可以将状态信息保存到实例状态Bundle中。
/****
* 当活动停止的时候系统会调用,onSaveInstanceState()方法 ,杀死您的活动可以将状态信息保存到实例状态Bundle中。
*
*/
override fun onSaveInstanceState(outState: Bundle) {
val string = outState.run {
putInt(STATE_SCORE, 12)
putInt(STATE_LEVEL, 12)
"this is xiao hei "
}
println("this is $string")
super.onSaveInstanceState(outState)
}
- onRestoreInstanceState():恢复易保存的数据
/****
* 恢复易保存的数据
*/
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
savedInstanceState.run {
val currentScore = getInt(STATE_SCORE)
val currentLevel = getInt(STATE_LEVEL)
println("this is $currentLevel")
println("this is $currentScore")
}
}