Android Activity生命周期调用是我们在开发Android应用时必须要理解的重要概念。下面,我将会详细讲解关于Android Activity生命周期调用的攻略。
什么是Android Activity生命周期
Android Activity生命周期指的是一个应用中Activity从创建到销毁的整个过程。在这个过程中每个状态都有相应的方法或回调函数可以被调用执行。理解它的工作原理非常重要,这可以让你在编写应用程序时获得更好的掌控力。
Android Activity生命周期包括以下状态:
onCreate()
:当 Activity 第一次被创建时调用。onStart()
:当 Activity 由不可见到可见的时候调用。onResume()
:当 Activity 准备好与用户交互时调用。onPause()
:当 Activity 失去焦点或没有被完全遮盖时调用。onStop()
:当 Activity 完全被遮盖且不再可见时调用。onRestart()
:当 Activity 从停止状态恢复时调用。onDestroy()
:当 Activity 被销毁时调用。
生命周期调用顺序
Android Activity的生命周期调用顺序如下:
onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onRestart() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()
生命周期调用的示例说明
下面的两个示例会让你更加了解Android Activity生命周期调用。在这里我将使用Kotlin编程语言来演示。
示例1:在 Activity 的生命周期中记录并显示传值
在这个示例中,我们要记录并显示传值在Activity的生命周期中的状态。在MainActivity.kt文件中,我们将会定义一个类,该类继承了AppCompatActivity类。
class MainActivity : AppCompatActivity() {
val TAG = "LifecycleValues"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d(TAG, "onCreate")
}
override fun onStart() {
super.onStart()
Log.d(TAG, "onStart")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume")
}
override fun onPause() {
super.onPause()
Log.d(TAG, "onPause")
}
override fun onStop() {
super.onStop()
Log.d(TAG, "onStop")
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "onDestroy")
}
}
在这个示例中,我们仅仅记录了生命周期的状态。接下来我们可以通过以下方式将值传递并在Log中显示:
class MainActivity : AppCompatActivity() {
val TAG = "LifecycleValues"
var showText: TextView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
showText = findViewById(R.id.showText) as TextView?
showText?.text = "onCreate()"
Log.d(TAG, "onCreate")
}
override fun onStart() {
super.onStart()
showText?.text = "onStart()"
Log.d(TAG, "onStart")
}
override fun onResume() {
super.onResume()
showText?.text = "onResume()"
Log.d(TAG, "onResume")
}
override fun onPause() {
super.onPause()
showText?.text = "onPause()"
Log.d(TAG, "onPause")
}
override fun onStop() {
super.onStop()
showText?.text = "onStop()"
Log.d(TAG, "onStop")
}
override fun onDestroy() {
super.onDestroy()
showText?.text = "onDestroy()"
Log.d(TAG, "onDestroy")
}
}
在示例中,我们通过showText的TextView控件来显示在Activity的生命周期过程中的状态。
示例2:在 Activity 的生命周期中记录并显示图片
在这个示例中,我们将在Activity的生命周期中展示一张图片,并记录每一个过程的状态(例如:在Activity被销毁之前我们可以使用内存释放机制来清空我们使用的内存)。在这里,我们将使用ImageView控件来显示。
在MainActivity.kt中,我们将defineImage()函数定义在onCreate()中:
private fun defineImage() {
val imageView = findViewById<ImageView>(R.id.imageView)
imageView.setImageResource(R.drawable.dog)
}
然后我们可以通过以下代码来调用生命周期方法:
public class MainActivity : AppCompatActivity() {
private final String TAG = "LifecycleImages";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate");
defineImage();
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
removeImage();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
removeImage();
}
private void removeImage() {
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageBitmap(null);
imageView.destroyDrawingCache();
}
private void defineImage() {
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.dog);
}
}
在生命周期方法中我们还可以使用removeImage()来从内存中清空图片以释放内存。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android Activity生命周期调用的理解 - Python技术站