Android开发中的技巧和踩坑
来源:互联网 发布:php接口开发实例代码 编辑:程序博客网 时间:2024/05/21 06:10
这篇博客持续更新自己总结的一些在项目开发中碰到的坑或者技巧,上篇是技巧篇,下篇是踩坑篇。借此以起到警示自己和帮助大家的作用!
一、技巧篇
1、懒汉式单例的双重校验锁写法,用到Java中的关键字Volatile
public class VolatileSingleton { public static volatile VolatileSingleton mSingleton; private VolatileSingleton() { } public static VolatileSingleton getInstance() { if (null == mSingleton) { synchronized (VolatileSingleton.class) { if (null == mSingleton) { mSingleton = new VolatileSingleton(); } } } return mSingleton; }}
2、懒汉式单例的静态内部类写法
public class InnerClsSingleton { private InnerClsSingleton() { } private static class SingletonLoader { private static final InnerClsSingleton SINGLETON = new InnerClsSingleton(); } public static InnerClsSingleton getInstance() { return SingletonLoader.SINGLETON; }}
3、一行居中,多行局左的TextView,在TextView外层嵌套宽高为wrap_content,居中的VeiwGroup
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="一行一行一行一行两行两行" android:textSize="50sp" /></RelativeLayout>
4、让低版本系统的手机展示的AlertDialog也有好的风格,可以用android.support.v7.app.AlertDialog包下的AlertDialog
5、activity中,如果onActivityResult方法有执行,则其会在onResume方法之前执行。
6、try catch finally语句中,try中执行了return,finally中的代码依然会执行。
7、使用Handler定时滚动ViewPager时,当界面不可见时Handler还是会run,应该在不可见时停掉Handler
8、看图
实现类似如图中红框内图标超出布局高度的效果时,简单来写可以在布局文件的根布局使用android:clipChildren=”false”属性,然后红框内布局高度超过其父布局即可,是不是比另写1个更高的布局简单些!
9、
for (int i = 0; i < mTabViews.length; i++) { mTabViews[i].setOnClickListener(this);}
像这种把数组或集合的size写入循环中是不合理的,每次循环都会计算size并创建int对象,所以应该这样写合理些
int size = mTabViews.length;for (int i = 0; i < size ; i++) { mTabViews[i].setOnClickListener(this);}
10、针对Map,以下几种情况不要使用Map
如果key是int类型,则使用SparseArray;
如果key是long类型,则使用LongSparseArray;
如果value是int,则使用SparseIntArray;
如果value是boolean,则使用SparseBooleanArray;
如果value是long,则使用SparseLongArray;
11、执行shell脚本./方式和bash方式是有区别的,bash是重开进程执行脚本,并且不需要脚本具有可执行权限;./则需要脚本具有可执行权限,否则报权限拒绝错误,./不是重开进程执行。
二、踩坑篇
1、Relativelayout布局,View1相对于View2存在时,若设置View1的visibility为Gone,则View2的相对于View1的位置失效,布局错误,此类建议设置为INVISIBLE。
2、垂直的RecyclerView嵌套水平的RecyclerView时,水平的RecyclerView的高度要手动测量指定,因为系统测量的高度是错误的。
3、写循环时切忌要避免死循环,可以用1个最大循环值以控制循环次数。
4、在RecyclerView列表的条目中不能判断图片的url是否为空然后再用Fresco的SimpleDrawView控件加载图片,因为来回滑动可能会复用错误的图片到url错误或为null的item上,直接加载即可。
5、上线项目时一定一定一定要测试核心功能,比如数据统计等。
6、linux命令千万别执行 rm -rf 命令,这几乎是毁灭性的。
7、重要的数据比如shell脚本、配置文件等记得备份,未来很有可能你会用到。
8、使用SurfaceView播放视频时,记得SurfaceHolder.addCallback()一定要在SurfaceView实例化之后就调用,否则可能导致addCallback()方法执行之后迟迟不走surfaceCreated()回调方法。
9、在Manifest文件中对Activity标签配置了android:configChanges="orientation|keyboardHidden|screenSize"
横竖屏切换时,就不会走onCreate(),而是回调onConfigurationChanged()方法,因此也不会自动加载layout-land目录下的横屏布局。
10、自定义View偶现setVisibility(View.VISIBLE)后不显示,通常手动在主线程调用invalidate()或在子线程调用postInvalidate()可解决。也可以试试在布局文件中不要设置为gone,而是用invisible代替。
11、View.setLayoutParams(layoutParams)不生效可以用这种方式:
view.post(new Runnable() { @Override public void run() { view.setLayoutParams(lp); }});
- Android开发中的技巧和踩坑
- Android开发过程中的坑和小技巧
- android 开发过程中的快捷键和技巧
- Android 开发中的微技巧和小知识
- android开发中的小技巧
- Android开发中的小技巧
- Android开发中的小技巧
- Android开发中的小技巧
- Android开发中的小技巧
- 几点Android 开发中的小技巧
- Android开发中的一些技巧记录
- Android 开发中的一些小技巧
- Android 开发中的一些小技巧
- Android 开发中的一些小技巧
- Android开发中的一些边缘技巧
- Android开发中的小技巧(1)
- Android开发中的小技巧(2)
- Android开发中的一些UI使用技巧
- Excel文件导入与导出方法详情
- 模式识别(Pattern Recognition)学习笔记(四)——最小风险贝叶斯决策
- 处理文本中的超链接
- 我迷茫的IT工作之路(一)起点
- iOS iBeacon初探
- Android开发中的技巧和踩坑
- centos7 发送邮件给外部邮箱
- 专访雷果国: 从1.5K到18K 一个程序员的5年成长之路--
- hadoop伪分布式配置
- Android Bluetooth蓝牙技术使用流程详解
- 模式识别(Pattern Recognition)学习笔记(五)——概率密度函数(pdf)的参数估计
- java字符类型高低代理
- 模式识别(Pattern Recognition)学习笔记(八)--Fisher线性判别分析
- leetcode刷题--459. Repeated Substring Pattern