Android生存指南之:开发中的注意事项

 更新时间:2013年05月21日 11:12:31   作者:  
本篇文章是对在Android开发中的一些注意事项,需要的朋友可以参考下
1. 为Activity声明系统配置变更事件
系统配置变更事件是指转屏,区域语言发生变化,屏幕尺寸发生变化等等,如果Activity没有声明处理这些事件,发生事件时,系统会把Activity杀掉然后重启,并尝试恢复状态,Activity有机会通过onSaveInstanceState()保存一些基本数据到Bundle中,然后此Bundle会在Activity的onCreate()中传递过去。虽然这貌似正常,但是这会引发问题,因为很多其他的东西比如Dialog等是要依赖于具体Activity实例的。所以这种系统默认行为通常都不是我们想要的。
为了避免这些系统默认行为,就需要为Activity声明这些配置,如下二个是每个Activity必须声明的:
<activity android:configChanges="orientation|keyboardHidden">
几乎所有的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对象也不会引发内存泄露。
7. 主线程只做UI控制和Frameworks回调相关的事。附属线程只做费时的后台操作。交互只通过Handler。这样就可以避免大量的线程问题。
8. Frameworks的回调不要做太多事情仅做必要的初始化,其他不是很重要的事情可以放到其他线程中去做,或者用Handler Schedule到稍后再做。
9. 要考虑多分辨率
至少为hdpi, mdpi, ldpi准备图片和布局。元素的单位也尽可能的使用dip而不要用px。
10. 利用Android手机的硬键
几乎所有的Android手机都有BACK和MENU,它们的作用是返回和弹出菜单,所以就不要再在UI中设计返回按扭和菜单按扭。很多优秀的应用如随手记和微信都有返回键,他们之所以有是因为他们都是从iOS上移植过来的,为了保存体验的一致,所以也有了返回和菜单。但这不够Android化,一个纯正的Android是没有必须重复硬键的功能的。

相关文章

  • Android仿天天动听歌曲自动滚动view

    Android仿天天动听歌曲自动滚动view

    这篇文章主要为大家详细介绍了Android仿天天动听歌曲自动滚动view的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android基于socket实现的简单C/S聊天通信功能

    Android基于socket实现的简单C/S聊天通信功能

    这篇文章主要介绍了Android基于socket实现的简单C/S聊天通信功能,结合实例形式分析了Android使用socket实现客服端与服务器端数据的发送与接收处理技巧,需要的朋友可以参考下
    2016-10-10
  • Android webview手动校验https证书(by 星空武哥)

    Android webview手动校验https证书(by 星空武哥)

    有些时候由于Android系统的bug或者其他的原因,导致我们的webview不能验证通过我们的https证书,最明显的例子就是华为手机mate7升级到Android7.0后,手机有些网站打不开了,而更新了webview的补丁后就没问题了
    2017-09-09
  • Android编程学习之异步加载图片的方法

    Android编程学习之异步加载图片的方法

    这篇文章主要介绍了Android编程学习之异步加载图片的方法,以实例形式较为详细的分析了Android异步加载图片所涉及的页面布局及功能实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android 简易手势密码开源库详解

    Android 简易手势密码开源库详解

    本文主要介绍Android 简易手势密码,这里主要介绍手势密码如何实现及简单的示例代码,有需要的同学可以参考下
    2016-08-08
  • Android网络编程之UDP通信模型实例

    Android网络编程之UDP通信模型实例

    这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
    2014-10-10
  • Android实现根据评分添加星级条

    Android实现根据评分添加星级条

    这篇文章主要介绍了Android实现根据评分添加星级条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 谈一谈Android内存泄漏问题

    谈一谈Android内存泄漏问题

    谈一谈Android内存泄漏问题,围绕内存泄露的定义、内存泄露的原理、内存泄露的解决方法进行探讨,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑)

    Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑)

    这篇文章主要为大家详细介绍了Android实现多种侧滑效果,包括仿qq侧滑,抽屉侧滑,普通侧滑三种效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Android之用PopupWindow实现弹出菜单的方法详解

    Android之用PopupWindow实现弹出菜单的方法详解

    本篇文章是对在Android中,用PopupWindow实现弹出菜单的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论