当前位置: 代码迷 >> Android >> android开发中的几个小问题
  详细解决方案

android开发中的几个小问题

热度:39   发布时间:2016-04-28 02:00:57.0
android开发中的几个问题
1.finish()和onDestroy()的关系是什么,他们具体都做了什么事情?
2.在listview开发过程中,当重写继承自BaseAdapter的Adapter的时候,发现Adapter的getView()函数执行次数竟然远大于实际listview中item子项数,这是为什么呢?
3.一个Activity按Home退回到后台,过了很久之后系统把Activity销毁,我们再打开手机进入刚刚的Activity时。系统会执行onCreate()函数吗?之前Activity中的数据丢失了么?Intent里传递过来的数据丢失了么?onSaveInstanceState()和onRestoreInstanceState()会起到什么作用么?
------解决思路----------------------
1.调用finish会让activity执行销毁操作,执行activity的生命周期
而ondestory是activity生命周期的最后一步,你可以重写它的方法,让其执行里面的方法。
这个是系统执行的,就像oncreate一样,你是没法直接调用的

2.getView()函数执行次数竟然远大于实际listview中item子项数,貌似是在listview一页装不下的情况。
因为默认是,如果listview翻页了,例如往下翻页,那么上面的item会消失,同时get一个新的item并添加在下面
所以会不断执行……次数会很多很多

还有如果listview的高度例如是wrap_content,那么它要根据内容不断的计算自己所该拥有的大小。导致listview经常重绘,多次调用getview

3.
3.1退到后台,如果系统确实销毁了activity,就会执行oncreate。
3.2之前activity的数据如果你没保存就消失了
3.3intent的也消失了,因为重新创建了。
3.4只要不是你执行的销毁就有用,储存内容有限
------解决思路----------------------
1.调用finish会让activity执行销毁操作,执行activity的生命周期
而ondestory是activity生命周期的最后一步,你可以重写它的方法,让其执行里面的方法。
这个是系统执行的,就像oncreate一样,你是没法直接调用的

2.getView()函数执行次数竟然远大于实际listview中item子项数,貌似是在listview一页装不下的情况。
因为默认是,如果listview翻页了,例如往下翻页,那么上面的item会消失,同时get一个新的item并添加在下面
所以会不断执行……次数会很多很多

还有如果listview的高度例如是wrap_content,那么它要根据内容不断的计算自己所该拥有的大小。导致listview经常重绘,多次调用getview

3.
3.1退到后台,如果系统确实销毁了activity,就会执行oncreate。
3.2之前activity的数据如果你没保存就消失了
3.3intent的也消失了,因为重新创建了。
3.4只要不是你执行的销毁就有用,储存内容有限
  相关解决方案