Android开发的几个小技巧

作者: realze | 来源:发表于2016-09-13 15:08 被阅读0次

1.使用Handler在子线程更新UI:有一部分刚入门的童鞋会认为handler的post(Runnable r)方法是重开一条线程执行,其实只要你点进去源码,就会发现这个方法只是调用了sendMessageDelayed(Message msg, long delayMillis)这个方法,所以调用 post方法和你重写handleMessage(Message msg)这个方法然后去调用sendMessage(Message msg)这个方法其实是一样的,不过个人比较倾向于调用post方法,因为感觉重写 handleMessage方法会使代码阅读的时候跳来跳去了,比较不爽(当然,这只是个人喜好)。这个方法可以这样用
public void toast(String msg) { handler.post(() -> Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show()); }
在BaseActivity里面添加这个方法,这样在需要toast的时候直接调用就行了,不用管是否在主线程。

2.假如你使用RxJava,合理使用RxJavaErrorHandler来处理全局错误,这样会减少很多重复代码的出现。具体使用方法
RxJavaPlugins.getInstance().registerErrorHandler(new RxJavaErrorHandler() { @Override public void handleError(Throwable e) { }) };

3.当使用okhttp的时候,使用Interceptor来处理一些统一的请求处理,如每个请求的加密和请求的带一些公用的头信息等都应该Interceptor里面处理,如果需要获取okhttp post请求的时候的数据,可以用以下方法
private static String requestBody2String(okhttp3.Request request) { try { final okhttp3.Request copy = request.newBuilder().build(); final Buffer buffer = new Buffer(); RequestBody requestBody = copy.body(); if (requestBody != null) { requestBody.writeTo(buffer); } return buffer.readUtf8(); } catch (final IOException e) { return null; }}
这个方法将得到请求的数据的json字符串,我们可以将其转成json对象来获取请求的数据。
4.当Map的key使int、long、boolean的时候使用SparseArray、SparseIntArray、LongSparseArray、SparseBooleanArray来代替Map,因为在Map中,key不能是int、long、boolean这些类型,所以用的时候只能用Integer、Long、Boolean这些包装类做key,所以这个过程涉及到封箱和拆箱,数据一多的话,效率自然就明显会慢了。

5.使用Gson的时候最好使用@SerializedName("xxx")这个来注解字段名,而不是让字段名和数据的key保持一致,因为有时候服务器返回的数据名可能格式风格和客户端的不一致,而且用注解的话,要是字段名称改变,直接改一下注解就行了,省去了很多麻烦。

6.还在为每次打包正式版的时候检查各种配置是否已经切换到正式线而烦恼么,利用好BuildConfig.DEBUG可以解决你的烦恼,再也不用担心在打包后发现接口什么的还是测试线的。

7.使用@StringDef @IntDef来代替枚举

8.如果你需要动态生成一张带有文字的图片,普通的做法是getDrawingCache来获取view上面的bitmap,但是这样做生成的图片会受到手机分辨率的影响,而且还需要在界面上生成view才行,这样显然不可取,最理想的做法是用StaticLayout和Canvas来生成,StaticLayout这个会自动排版你的文字,TextView源码里就是用的这个。

9.Activity的recreate()方法,重新创建activity,这个在切换当前activity主题或者中英文的时候很有用。

10.对于能用svg来替换的图片就尽量用svg,不仅体积小了很多,还可以随时手动改变大小而不失真。

11.如果你的应用经常OOM,相信我很多时候不是图片太大的问题,而是内存泄漏。这个时候可以用StrictMode来检查是哪个地方出错了
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());

相关文章

  • Android开发的几个小技巧

    1.使用Handler在子线程更新UI:有一部分刚入门的童鞋会认为handler的post(Runnable r)...

  • 4

    有几个小技巧:使用android:gravity来指定文字的对齐方式 android:textsize属性可以指定...

  • Android开发小技巧

    1.Touch处理 MotionEventCompat.getActionMasked(ev)等价于event.g...

  • android开发小技巧

    1.无干扰模式(Distraction Free Mode) 您可以依次点击: View → Enter Dist...

  • Android 开发小技巧

    Android 开发小技巧 前言 做了许久的开发,常常有些小细节会打动到我,希望这篇文章可以记录这些分享给大家 布...

  • Android 开发小技巧

    1、5.0以上点击水波纹效果 在想要实现效果的布局或控件中加入: 2、5.0以上使用4.0的时间日期选择控件样式 ...

  • Android开发小技巧

    List的倒序Collections类是一个java的工具类,在java.util包下面.提供了集合的复制和倒序,...

  • Android 开发小技巧

    昨天看郭霖的书,发现两个很实用的开发技巧,哈哈哈,很高兴今天记得,写下来! 1 方便调试 我们开发时项目写的比较大...

  • Android开发小技巧

    在Android Studio项目中设置文件夹显示层级效果. 如果项目有不同的包名的时候,需要分层次文件夹结构点击...

  • Android开发的小技巧

    前言 平时开发中经常遇到的小的问题,这里记录一下。 EditText禁止自动弹出软键盘的方法 在包含EditTex...

网友评论

    本文标题:Android开发的几个小技巧

    本文链接:https://www.haomeiwen.com/subject/aqemettx.html