zoukankan      html  css  js  c++  java
  • Activity的生命周期

    当打开一个Activity的时候,会调用这个Activity的onCreate()方法,接着调用onStart()方法,然后调用onResume()方法.当onStart()方法执行之后,我们就可以看到这个Activity界面了

    下面简单讲一下Activity生命周期中每个函数的作用:

    onCreate() : 

    当Activity第一次被创建的时候调用此方法.一般在此方法中进行控件的声明,添加事件等初始化工作.

    onStart():

    当Activity被显示到屏幕上的时候调用此方法.

    onResume():

    当此Activity能够被操作之前,也就是能够获得用户的焦点之前调用此方法.

    onRestart():

    当Activity被停止后又被再次启动之前调用此方法.接着将调用onStart()方法.

    onPause():

    当第一个Activity通过Intent启动第二个Activity的时候,将调用第一个Activity的onPause()方法.然后调用第二个Activity的onCreate(),onStart(),onResume()方法,接着调用第一个Activity的onStop()方法.如果Activity重新获得焦点,则将调用onResume()方法;如果此Activity进入用户不可见状态,那么将调用onStop()方法.

    onStop():

    当第一个Activity被第二个Activity完全覆盖,或者被销毁的时候回调用此方法.如果此Activity还会与用户进行交互,将调用onRestart方法();如果此Activity将被销毁,那么将调用onDestroy()方法.

    onDestroy():

    Activity被销毁之前调用此方法.或者是调用finish()方法结束Activity的时候调用此方法.可以在此方法中进行收尾工作,比如释放资源等.

    (注意:重写某个Activity的这些回调方法的时候需要首先在第一行调用基类Activity的相应的回调方法.比如super.onCreate(),super.onStart()等等.)

    到这里,大家可能会有些疑问,谷歌为什么要这样设计呢?如:

    1.当从第一个Activity启动第二个Activity的时候,为什么先调用第一个Activity的onPause()方法,然后再调用第二个Activity的onCreate()等方法呢?

    解释:假如有这样一个情况,你正在使用APP听音乐,突然来了一个电话,那么当然需要先暂停音乐,然后进行电话的处理。所以这就是onPause()方法的作用:可以用来保存当前的各种信息.可以在这个APP的onPause()方法中实现暂停音乐的逻辑,然后再处理电话的业务处理.

    2.当从第一个Activity启动第二个Activity的时候,为什么第一个Activity的onStop()方法是调用完第二个Activity的系列方法后才调用呢,为什么不在第一个Activity的onPause()方法之后就调用呢? 

    解释:这是谷歌对安全方面的一个考虑.假如先调用第一个Activity的onStop()方法,那么此时第一个Activity将不可见,如果接下来调用第二个Activity的一系列创建方法失败了,那么就会导致这两个Activity都没显示在屏幕上,就会出现黑屏等不友好界面.如果是调用完第二个Activity一系列创建方法后,再调用第一个Activity的onStop()方法,就会避免这种情况的发生.

    举例:机器人播放音乐,关闭音乐

    08-23 10:50:55.230 I/am_create_task( 526): [0,10]
    08-23 10:50:55.230 I/am_create_activity( 526): [0,1118681472,10,com.avatar.play
    er/.MediaPlayActivity,com.avatar.player.ACTION,NULL,NULL,276824064]   --------Activity第一次被创建的时候调用此方法
    08-23 10:50:55.230 I/wm_task_created( 526): [10,1]
    08-23 10:50:55.230 I/wm_task_moved( 526): [10,1,4]
    08-23 10:50:55.230 I/wm_home_stack_moved( 526): 0
    08-23 10:50:55.340 I/am_pause_activity( 526): [0,1112149968,com.avatarmind.medi
    acenter/.SongActivity]----当第一个Activity通过Intent启动第二个Activity的时候,将调用第一个Activity的onPause()方法.
    08-23 10:50:55.350 I/am_on_paused_called( 7838): [0,com.avatarmind.mediacenter.S
    ongActivity]
    08-23 10:50:55.350 I/am_restart_activity( 526): [0,1118681472,10,com.avatar.pla
    yer/.MediaPlayActivity]
    08-23 10:50:55.380 I/am_create_service( 526): [0,1120267448,.PlayerService,1001
    2,7946]
    08-23 10:50:55.390 I/am_on_resume_called( 7946): [0,com.avatar.player.MediaPlayA
    ctivity]
    08-23 10:50:55.490 I/am_activity_launch_time( 526): [0,1118681472,com.avatar.pl
    ayer/.MediaPlayActivity,143,143]
    08-23 10:50:58.990 I/am_finish_activity( 526): [0,1118681472,10,com.avatar.play
    er/.MediaPlayActivity,app-request]
    08-23 10:50:59.110 I/am_pause_activity( 526): [0,1118681472,com.avatar.player/.
    MediaPlayActivity]
    08-23 10:50:59.110 I/am_on_paused_called( 7946): [0,com.avatar.player.MediaPlayA
    ctivity]
    08-23 10:50:59.120 I/am_resume_activity( 526): [0,1112149968,8,com.avatarmind.m
    ediacenter/.SongActivity]
    08-23 10:50:59.120 I/am_on_resume_called( 7838): [0,com.avatarmind.mediacenter.S
    ongActivity]
    08-23 10:50:59.130 I/am_destroy_activity( 526): [0,1118681472,10,com.avatar.pla
    yer/.MediaPlayActivity,finish-imm]
    08-23 10:50:59.170 I/am_destroy_service( 526): [0,1120267448,7946]
    08-23 10:50:59.190 I/wm_task_removed( 526): [10,removeTask]
    08-23 10:50:59.190 I/wm_task_removed( 526): [10,removeAppToken: last token]
    08-23 10:50:59.560 I/sf_frame_dur( 171): [com.avatar.player/com.avatar.player.M
    ediaPlayActivity,1,1,1,1,2,0,1]

  • 相关阅读:
    Blender/UE4骨骼转换插件:Uefy v1.2.1 For UE4 BL 2.8+使用教程
    01【Daz模型】DazStudio 高品质可爱的小姐姐角色模型包 Lancy Character with dForce Hair and Expressions for Genesis 8 Female (含角色、头发、扩展)
    创作设计抖音免版权高清图库整理
    GPU三维地形生成软件 World Creator v2.1.0 Win
    [人物存档]【AI少女】【捏脸数据】【捏人数据】【人物卡】:女巫八重樱
    ubuntu Linux下C语言open函数打开或创建文件与read,write函数详细讲解
    OO第二次博客作业(第二单元总结)
    OO第一次博客作业(第一单元总结)
    Beta阶段 第四次Scrum Meeting
    Beta阶段 第三次Scrum Meeting
  • 原文地址:https://www.cnblogs.com/yinlili/p/9522111.html
Copyright © 2011-2022 走看看