致Android-那些年,我们一起踩过的坑

本文分享了Android开发中遇到的一些常见问题及解决方案,包括Android Studio的错误处理、ListView头像错位问题、Activity被回收导致的问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大爷的,从搞android至今,踩过的坑倒是不少,MD,要是同一个坑,踩一次也就算了,踩两次、多次那就显得狠low了…

记录那些年,希望跟我踩同一个坑的同胞们一些帮助(主要是怕自己踩同一个坑,哈哈~~),问题虽小,可能意义重大,致我们一起踩过的坑,持续更新中…

1.最近在网上搞了个Android studio 的DOME玩玩,在公司的玩的很溜,TM,一回到家,各种ERROR,难道是我很久没在家开过电脑了??什么ERROR讷?

  • 情景1:倒入项目,build时间ZTM长,等不下去呀,直接崩溃
  • 情景2:好不容易倒进去了,报什么找不到android-support-appcompat-v7.23+

艹,这不是很明显嘛,没更新android sdk嘛,找到一些国内镜像服务器地址,http://www.androiddevtools.cn/ 随便选个可行的,打开SDK Manager 配置下地址端口,不就完事了嘛。

结果总是不尽人意,他妈的在android studio 直接更新sdk还更新不了,非的让我手动打开SDK Manager 来搞。由于我忽略了一项没更新,Extra 下的一项-关于 \sdk\extras\android\m2repository\com\android\support下的,截个图看看标注下MD 就这个鸟没更新,导致一直报错

跟新后,会显示完整的各个版本,就这个鸟,原来如此

这里写图片描述

2.今天倒入一个项目包这个鸟几把错

Error:Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/2.10/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0

Google 了一把,初始化了下cache 没用,File-Invalidate cache
删除 C:\Users\XX.gradle\daemon\2.10\registry.bin文件还是没卵用
然后直接把该工程下的gradle.properties 中的一句卵注释掉,成功编译,先别管那么多,编译成功先
rg.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

3.ListView 实现消息列表出现头像错位现象
最近用listview实现了一个消息列表,马丹,第一个企业头像出项错位,把进程杀掉,重新进入,都发生错位,看代码,毛问题没有…最后定位,listview属性用了wrapContent,在绘制listview 时 ,重复调用了getView方法。由于需要动态绘制高度,所以导致重复调用adapter的getView方法,从而导致头像错误现象。

解决办法:把listview属性换成matchParent,心得:在listview中,当item条目超过手机屏幕时,wrapcontent相对matchParent要耗资源,因此,在开发过程中,尽量使用matchParent

4.Activity被回收导致fragment的getActivity为null的解决办法

如果系统内存不足、或者切换横竖屏、或者app长时间在后台运行,Activity都可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity。

app发生的变化为:某种原因系统回收MainActivity——FragmentA被保存状态未被回收——再次点击app进入——首先加载的是未被回收的FragmentA的页面——由于MainActivity被回收,系统会重启MainActivity,FragmentA也会被再次加载——页面出现混乱,因为一层未回收的FragmentA覆盖在其上面——(假如FragmentA使用到了getActivity()方法)会报空指针,出现crash。

解决办法很简单:
A. MainActivity重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到其随着MainActivity一起被回收的效果!

B. 在活动的onCreate中
//app长时间在后台运行,再次进入app的时候可能会出现crash,而且fragment会有重叠现象
if(savedInstanceState!=null){
String FRAGMENTS_TAG = “Android:support:fragments”;
savedInstanceState.remove(FRAGMENTS_TAG);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值