Activity与Service生命周期

作者: 安卓Boy | 来源:发表于2017-12-26 15:52 被阅读13次
    activity.png

    Activity状态

    只有下面三个状态是静态的,可以存在较长的时间内保持状态不变。(其他状态只是过渡状态,系统快速执行并切换到下一个状态)

    • 运行 (Resumed)

    1.当前activity在最上方,用户可以与它进行交互(通常也被理解为“running”状态)

    2.此状态由onResume()进入,由onPause()退出

    • 暂停(Paused)

    1.当前activity仍然是可见的,但被另一个activity处在最上方,最上方的activity是半透明的,或者部分覆盖整个屏幕,被暂停的activity不会再接受用户的输入。

    2.处于活着的状态,(activity对象存留在内存,保持着所有的状态和成员信息,仍然吸附在window manager)。

    3.当处于极度低内存的状态时,系统会杀掉该activity,释放相应的资源

    4.此状态由onPause()进入,退出可能是 onResum()或者onCreat()重新唤醒软件,或者被onStop()杀掉。

    • 停止(stoped)

    1.当前activity完全被隐藏,不被用户可见,可以认为是处于在后台。

    2.处于活着的状态(activity对象存留在内存,保持着所有的状态和成员信息,不再吸附在window manager)

    3.该状态onStop()进入。或onRestart() 或 onCreate()重新唤醒软件,或者被onDestory()彻底死亡,其他状态(created 与 started)都是短暂的,系统快速的执行那些回调函数并通过。

    activites 调用流程

    当activity A 启动activity B,两个activity都有各自的生命周期,activity A 暂停或停止,activity B被创建。记住,在activity B 创建之前,activity A 并不会完全停止。流程如下:

    1.activity A 进入onPause()

    2.activity B 依次 onCreate(), onStart(), onResume()。(此时Activity B得到了用户焦点)

    3.如果activity A不在可见,则进入onStop()


    service.png

    Service

    启动方式

    service有两种启动方式, 不同的启动方式决定了Service具有两种生命周期的可能(并非互斥的两种)。

    start方式:onCreate(),onStartCommand()。onDestroy释放资源。
    bind方式: onCreate(),onBind()方法。需要所有client全部调用unbindService()才能将Service释放资源,等待系统回收。

    相关文章

      网友评论

        本文标题:Activity与Service生命周期

        本文链接:https://www.haomeiwen.com/subject/azkjgxtx.html