iOS Application生命周期
AppDelegate
- (BOOL)application:(UIApplication *)applicationwillFinishLaunchingWithOptions:(NSDictionary *)launchOptions
将要启动- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
程序首次完成启动时执行,若直接启动,launchOptions没有数据,若由其他应用启动,launchOptions包含数据- (void)applicationWillResignActive:(UIApplication *)application
应用进入后台,程序失去激活(Active)时调用
需要在此方法中执行下列任务- 暂停正在执行的任务
- 禁止计时器
- 减少OpenGL ES帧率
- 若为游戏应暂停游戏
- (void)applicationDidEnterBackground:(UIApplication *)application
已经进入后台时调用- 释放共享资源
- 保存用户数据
- 作废计时器
- 保存足够的程序状态以便一次恢复
- (void)applicationWillEnterForeground:(UIApplication *)application
从后台进入前台时调用- (void)applicationDidBecomeActive:(UIApplication *)application
应用进入激活状态- (void)applicationWillTerminate:(UIApplication *)application
应用兼将要退出时调用UIController
- alloc 创建对象
- init 初始化对象
- loadView 从nib载入视图
- viewDidLoad 载入完成
- viewWillApper 视图出现在屏幕之前
- viewWillDisapper 渲染完成,显示在屏幕上
- viewDiddisapper 从屏幕移除之前
- viewWillUnload 已经从屏幕移除
- viewDidUnload 载出之前
- dealloc 被销毁
Android Activity生命周期
onCreate()
创建ActivityonStart()
创建或从后台重新到前台时被调用onRestart()
从后台到前台时被调用onResume()
创建或者被覆盖、后台重新回到前台时被调用onPause()
被覆盖或者锁屏时被调用onStop()
退出当前Activity或者跳转到新的Activity时被调用onDestroy()
退出Activity时被调用,调用之后Activity就被销毁了onSaveInstanceState(Budle outState)
Activity被系统销毁时调用onRestoreInstanceState(Budle savedInstanceState)
Activity重建时被调用对比
第一次启动
iOS:
- [AppDelegate application:didFinishLaunchingWithOptions:]
- [ViewController viewDidLoad]
- [ViewController viewWillAppear:]
- [AppDelegate applicationDidBecomeActivie:]
- [ViewController viewDidAppear:]
Android:
onCreate()
onStart()
onResume()
应用进入后台
iOS
- [AppDelegate applicationWillResignActive:]
- [AppDelegate applicationDidEnterBackground:]
Android
onPause()
onStop()
应用从后台进入前台
iOS
- [AppDelegate applicationWillEnterForeground:]
- [AppDelegate applicationDidBecomeActive:]
Android
onStart()
onResume()
完全退出应用
iOS
- [AppDelegate applicationDidEnterBackground:]
- [ViewController viewWillDisappear:]
- [ViewController viewDidDisappear:]
- [AppDelegate applicationWillTerminate:]
Android
onPause()
onStop()
onDestroy()
分析
Android、iOS的生命周期看着大同小异,但是差别还算比较大。
Android的Activity类似iOS中UIApplication + UIViewController。
iOS的应用像是一个全屏展开的窗口,UIApplication负责管理运行状态的生命周期,UIController负责管理视图,视图间靠通知传递数据
Android的App可以理解为Activity
,Service
,Centent Provider
,BroadcastReceiver
组成,可视部分主要由Activity组成,Activity要管理运行状态和视图,而且每个Activity的运行状态相对独立,四大组件之间、包括应用之间都可以通过Intent
传递数据。