永发信息网

Andriod开发中,有哪些需要注意的坑

答案:1  悬赏:80  手机版
解决时间 2021-11-27 04:45
Andriod开发中,有哪些需要注意的坑
最佳答案
1. 为Activity声明系统配置变更事件
系统配置变更事件是指转屏,区域语言发生变化,屏幕尺寸发生变化等等,如果Activity没有声明处理这些事件,发生事件时,系统会把Activity杀掉然后重启,并尝试恢复状态,Activity有机会通过onSaveInstanceState()保存一些基本数据到Bundle中,然后此Bundle会在Activity的onCreate()中传递过去。虽然这貌似正常,但是这会引发问题,因为很多其他的东西比如Dialog等是要依赖于具体Activity实例的。所以这种系统默认行为通常都不是我们想要的。
为了避免这些系统默认行为,就需要为Activity声明这些配置,如下二个是每个Activity必须声明的:

几乎所有的Activity都要声明如上,为什么Android不把它们变成Default的呢?
2. 尽量使用Android的API
这好像是废话,在Android上面开发不用Android API用什么?因为Android几乎支持Java SE所有的API,所以有很多地方Android API与Java SE的API会有重复的地方,比如说对于文件的操作最好使用Android里面Context封装的API,而不要直接使用File对象:
Context.openFileOutput(String); // no File file = new File(String)
原因就是API里面会考虑到Android平台本身的特性;再如,少用Thread,而多使用AsyncTask等。
3. 要考虑到Activity和进程被杀掉的情况
如了通常情况退出Activity外,还有Activity因其他原因被杀的情况,比如系统内存过低,系统配置变更,有异常等等,要考虑和测试这种情况,特别是Activity处理重要的数据时,做好的数据的保存。
4. 小心多语言
有些语言真的很啰嗦,中文或英文很简短就能表达的事情到了其他语言就变的死长死长的,所以如果是wrap_content就可能把其他控制挤出可视范围; 如果是指定长度就可能显示不全。也要注意特殊语言比如那些从右向左读的语言。
5. 不要用四大组件去实现接口
一是组件的对象都比较大,实现接口比较浪费,而且让代码更不易读和理解; 另外更重要的是导致多方引用,可能会引发内存泄露。
6. 用getApplication()来取Context当参数
对于需要使用Context对象作为参数的函数,要使用getApplication()获取Context对象当参数,而不要使用this,除非你需要特定的组件实例!getApplication()返回的Context是属于Application的,它会在整个应用的生命周期内存在,远大于某个组件的生命周期,所以即使某个引用长期持有Context对象也不会引发内存泄露。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
白巩多少钱
黑客软件,怎么玩
跪求指教
普通螺纹的牙型角是多少,管螺纹牙型角是多少
机票和机场大巴车票是否属于城际间交通报销范
魏岚《月亮出来了》歌词
什么是二重零点
《在苍色世界的中心》怎么就只有3集,哪个哥
听说华信智原分公司很多,都做的怎么样?
火葱怎样保管才不会烂掉
拉菲娱乐2平台还可以注册吗, 5 56 8430 扣正
大面到双流汽车总站怎么赶车
女神刘亦菲腿粗不好看,女人腿粗如何瘦腿简单
汇编条件码
巴黎大巴司机如何勒索中国游客?
推荐资讯
谜海一羽:杏是春风及第花(酒名一,上楼格) 梅
道路运输证市里的户能在县里检吗
在想将硬盘中的照片拷到U盘上时遇到这样的问
径赛项目有哪些
全球七大神秘组织,哪个最神秘
这是一个很有历史韵味的地方怎么翻译
那种简单的拖地机好不好用?
飞行器的地面站有什么作用
求《风临天下,皇后有点坏》全文、
两个数的和是864,商是3,这两个数各是多少?
求藏头诗“我爱曹应敏”,谢谢
请问这个袁大头是九年中发版吗,不懂勿喷,谢
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?