100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android开发------Activity生命周期

android开发------Activity生命周期

时间:2022-02-15 13:01:11

相关推荐

android开发------Activity生命周期

这几天工作比较忙,基本没有什么时间更新播客了。

趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征

什么是生命周期

在还没有接触android开发的时候,听到有人说Activity生命周期的时候,觉得这是一个很专业很深奥的东西。

但是在了解过之后,原来并不是那么一回事,这个Activity生命周期其实是很基础的东西,明白他们的原理对我们以后开发

编写优秀程序有很大帮助。

生命周期其实就是一个东西从出生到消亡的这段时间,那么Activity生命周期又是怎么一回事呢?

我们先借用官方的一张图说明一下,看下面的图。

从图中可见,在Activity的生命周期中,在不同的阶段都由不同他的函数控制它们的行为。当然这个行为可以由用户自己决定。

我们先不看图片左边的箭头,我们看的是图片中间和右边的部分。

周期第一阶段:活定阶段,即从lanucned到running阶段。

特征:处于窗口最前端,整个Activity都可以被用户看见

函数执行顺序:onCreate()->onStart()->onResume()

为了证明这些函数是确确实实被执行的,我们编写以下代码:

1 package com.aidevelops.activitys; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class MainActivity extends Activity { 8 9@Override10protected void onCreate(Bundle savedInstanceState) {11 super.onCreate(savedInstanceState);12 setContentView(R.layout.activity_main);13 Log.d("Active", "onCreate method started");14}15 16@Override17protected void onResume() {18 super.onResume();19 Log.d("Active", "onResume method started");20}21 22@Override23protected void onStart() {24 super.onStart();25 Log.d("Active", "onStart method started");26}27282930 }

View Code

Log.d(tag, message)函数用于将指定tag的message打印到logcat控制台

我们可以将tag理解为一个分类

运行程序后打开LogCat窗口,创建一个条件过滤器

如图:

点击绿色的+号后弹出一个窗口:

注意Log.d()函数的第一个参数就是by log Tag中的Tag,第二个参数是要打印到LogCat控制台的信息

填好后点击OK。接着点刚才创建的LiifeCycle过滤器,就能看到下图的信息:

我们可以看到,每个函数都按顺序执行了。

第二阶段:暂停阶段

特征:Activity被部分遮挡。例如被半透明的窗口遮挡。

涉及的函数:onPause()、onResume()

第三阶段:停止阶段

特征:Activity完全被遮挡,例如打开了一个新的Activity。

涉及的函数:onPause()、onStop()

当用户导航回到之前停止的Activity的时候,就会触发已经停止的Activity重新启动。

涉及的函数:onRestart()->onStart()->onResume()

如图:

onPause和onStop是我们启动另一个Activity的时候触发的

而onRestart,onStart,onResume是我们点击后退键的时候触发的

大家有兴趣的可以自己写代码测试。只需要像上面的代码一样,覆盖相应的声明周期函数,填入你想测试的代码就可以了。

贴上完整代码:

1 package com.aidevelops.activitys; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.View; 8 9 public class MainActivity extends Activity {10 11@Override12protected void onCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 Log.d("Active", "onCreate method started");16}17 18@Override19protected void onResume() {20 super.onResume();21 Log.d("Active", "onResume method started");22}23 24@Override25protected void onStart() {26 super.onStart();27 Log.d("Active", "onStart method started");28}29 30@Override31protected void onPause() {32 super.onPause();33 Log.d("Active", "onPause method started");34}35 36@Override37protected void onRestart() {38 super.onRestart();39 Log.d("Active", "onRestart method started");40}41 42@Override43protected void onStop() {44 super.onStop();45 Log.d("Active", "onStop method started");46}47 48public void onClickStartActivity(View view)49{50 Intent intent = new Intent(this, TargetActivity.class);51 startActivity(intent);52}5354 }

View Code

那么知道这些东西对我们有什么作用,我们后面继续讲,因为博主已经累了,呵呵,大家都早点睡吧,早睡早起身体好,:-)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。