android 常用tips

来源:互联网 发布:免费网络考试系统 编辑:程序博客网 时间:2024/06/02 01:44

1、对于不需要硬件加速的activity(没有动画效果,视频播放以及各种多媒体文件的操作)可以关掉硬件加速,在AndroidMenifest.xml文件中通过“android:configChanges=sereenSize|orientation”

2、为了减轻应用程序主进程的内存压力,对于耗内存比较多的界面(例如flash播放界面、视频播放界面),可以在AndroidMenifest.xml文件中对应的Activity标签下调用“android:process=.processname”单开一个进程,但是在退出这个activity时在onDestroy方法中调用System的kill方法来杀掉该进程

3、不要用intent传递大量的数据,这样有可能导致ANR或者报异常。

4、使用文件流、Cursor时,使用结束后记得一定要关闭,否则有可能导致内存泄漏,严重的情况有可能引发程序崩溃。

5、在res/values/sarrays.xml文件中定义的单个数组的元素个数不宜过大,过大会导致加载数据时非常缓慢,有时候你需要使用数组资源时数据可能还没加载完成。

6、一个Activity最耗费内存的是activity的背景(多数情况下如此,特别对于分辨率很大的机器,一个界面的背景算下来需要好几兆内存),所以在程序界面较多时,可以考虑将图片转换成静态的drawable,然后多个activity公用一张背景图。

7、可以通过微application、activity自定义主题的方式来关掉多点触摸功能,只需要在自定义的主题下添加下面两个标签

<item name="android:windowEnableSplitTouch">false</item><item name="android:splitMotionEvents">false</item>

8、android单个dex文件的方法数不能超过65535个

9、我们可以通过定义一个静态类来实现防止按钮被重复点击导致重复重复执行一段代码的问题:

public static class BtnClickUtils {         private BtnClickUtils () {           }         public static boolean isFastDoubleClick()            {           long time = System.currentTimeMillis();           long timeD = time - mLastClickTime;           if(0<timeD&&timeD<1000) {            return true;             }            mLastClickTime = time;            return false;            }}

10、将只需要执行一次的初始化操作放在static代码块中执行可以优化程序,

11、在布局中多使用RelativeLayout而不是LinearLayout,过多的嵌套ViewGroup会使栈调用层次超过Dalvik的限制导致StackOverFlowException,占位或填充剩余空间的元素多用View,避免使用layout等viewGroup。

12、float和double只能用于工程计算和科学计算,在商业计算中,需要使用BigDecimal,例如在保留一定小数位数时使用DecimalFormat,目标值小数位数达到12位的话,将会出现精度丢失的情况而无法正确保留一定位数小数。此时使用BigDecimal则不会出现问题,使用BigDecimal时,如果小数位数不够,不会自动补0。

13、activity中onSaveInstanceState()会在activity实例被回收时调用,用于保存Activity相关状态至Bundle对象中,我们亦可以将额外的键值对存入该Bundle对象中以保存状态,当重新创建该activity时 保存的Bundle对象就会传至Activity的onRestoreInstanceState()方法与onCreate()方法中,但是如果Activity是通过finish()方法结束的,onSaveInstanceState()方法不会被调用。

14、如果Activity的启动模式是singleTop或者singleInstance,使用startActivityForResult()方法启动另一个方法将直接返回Activity.RESULT_CANCELED,这是因为系统在FrameWork做了对这两种启动模式的限制,

15、在android系统中,apk之间可以相互读取数据的条件是:有同样的签名,并且AndroidManifest.xml文件中配置的android:shareUserId属性值相同,那么两个apk运行在同一个进程中,可以互相访问任意数据。

0 0
原创粉丝点击