Android-保你能记住的生命周期教程

原文:http://tryenough.com/android-lifecycle

先看一下官方给出的图:android

总结一下上图code

主要的回调方法包括:cdn

onCreate 、onStart 、onResume 、onPause 、onStop 、onDestroy 、onRestartblog

原文:http://tryenough.com/android-lifecycle

给出一张方便记忆的图:生命周期

这些方法都是两两对应的:进程

1.onCreate建立与onDestroy销毁; 2.onStart可见与onStop不可见; 3.onResume可编辑(即焦点)与onPause; 4.onRestart:在Activity被onStop后,可是没有被onDestroy,在再次启动此Activity时就调用onRestart(而再也不调用onCreate)方法;若是被onDestroy了,则是调用onCreate方法。it

保存数据必须在onPause方法中进行io

原文:http://tryenough.com/android-lifecycle

经过滑动卡片删除应用杀死进程的时候,或者经过应用管理杀死进程的时候,只有栈里面的第一个没有销毁的activity执行ondestroy方法,通常都是mainActivity,其它activity均不执行ondestroy。class

Android何时只会调用onPause()而不会调用onStop()?lazyload

原文:http://tryenough.com/android-lifecycle

onPause是失去焦点,onStop是不可见时调用,只要Activity失去了焦点还可见就会只调用onPause不调用onStop,常见是translucent(半透明) activity挡住当前Activity。

网上不少人说弹出Dialog时只会调用onPause()而不会调用onStop(),实际上是错误的说法,缘由是必须使Activity离开前台才会调用onPause,也便是退出栈顶。可是Dialog并不会使Activity离开栈顶。因此答案应该是此时既不会调用onPause()也不会调用onStop()。

onStop不调用的场景

咱们知道,Activity A打开B,流程是这样的:

onCreateA - onStartA - onResumeA - onPauseA - onCreateB - onStartB - onResumeB - onStopA

而后按返回到A的流程是这样的:

onPauseB - onStartA - onResumeA - onStopB - onDestoryB

可是若是在B打开的生命周期方法onResume中直接finish当前的B,那么此时返回到A的流程就会缺乏onStartA。缘由是由于此时对于系统来讲A一直是可见的。

onPauseB - onResumeA - onStopB - onDestoryB

原文:http://tryenough.com/android-lifecycle

相关文章
相关标签/搜索