Activity生命周期小结

在做一个android应用项目中,遇到一个问题, 用monkey测试时, 偶然报异常"Receiver not registered",仔细查看log,思考一番,这可能与注册和注销Receiver时间不对有关。修改代码修复了错误。借此, 对android的Activity组件做个小结。

 下图是官网给出的Activity生命周期


   先尝试翻译一段官网API介绍。

    在Activity中有3个关键的循环需要注意:

  1.整个生命周期,Activity整个生命周期开始于第一次调用onCreate(Bundle), 终止于调用onDestroy(). 一个Activity将会在onCreate()方法里面建立好全局状态,在onDestroy()方法里面释放剩下的资源。举个例子,如果一个Activity中运行个后台线程从网络上下载数据,那么这个线程可能会是在onCreate()里面创建,在onDestroy()销毁。

  2.可视生命周期, Activity的可视时间在调用onStart()后, 直到调用对应的onStop()之间。这段时间内,用户可以在屏幕上看到Activity,但是Activity有可能没有在前台和不能和用户交互。在这两个方法之间,你可以维护这些需要用来显示Activity的资源。举个例子, 你可以在onStart()里面注册监视影响UI变化的BroadcastReceiver,在onStop()里面注销BroadcastReceiver,当Activity在可见和隐藏状态变换的时候,onStart(0和onStop()会被调用多次。

  3.前台生命周期,Activity的前台生命周期是在调用onResume()后,直到调用onPause()。这段时间内,Activity在所用Activyt的前面,同时可以和用户交互,一个Activity会频繁的在resumed和paused状态之间转换。比喻说设备睡眠,activiyt结果已经发送,新inent已经发送, 因此,这两个方法间的代码必须短小轻量。

   通过官网介绍, 比较容易明白在应用中,Activity的每个生命周期函数里面应该做什么。

Activity类的生命周期函数一般都是回调函数,它的调用者是ActivityThread.  ActivityThread类的消息处理函数会根据收到的消息, 调用Activity的生命周期函数。ActivityThread类的main()函数是应用的真正入口,它所在的线程就是UI主线程。在ActivityThread类的main函数中,会调用Looper.prepareMainLooper()准备消息队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值