关于5-3教程几个问题
如教程5-3倒计时例子,有几个问题想请教下。
1.静态的内部类不会持有外部类的引用,这个Handler是静态的,当Activity被回收了,这个Handler不就不能用这个Activity里的对象(TextView)吗?
2.Activity什么情况会被回收?Activity跳转,原来的Activity会不会被回收?什么时候才算关闭Activity?
3.GC检查时,如果已经关闭了该Activity,就算后台线程还没结束(比如在下载),由于仅有一条来自Handler的弱引用指向Activity,GC会不会在检查的时候把Activity回收掉?如果回收掉了,该Handler线程要用到Activity中的某些对象能正常使用吗?
问题有点多,不好意思了,嘿嘿~
正在回答 回答被采纳积分+1
1、如果Handler持有当前Activity的引用就当然也包活对象TextView,这个Activity就不会被销毁,这样会造成内存的泄漏。所以把handler定义成static教由系统来处理销毁。
2、Activity有两种销毁。
第一种是正常的销毁,比如用户按下Back按钮或者是activity自己调用了finish()方法;
另一种是由于activity处于stopped状态,并且它长期未被使用,或者前台的activity需要更多的资源,这些情况下系统就会关闭后台的进程,以恢复一些内存。
3、如果Activity还在被引用,系统就不会回收它。
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星