温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android——优化

发布时间:2020-08-09 04:54:46 来源:网络 阅读:395 作者:wauoen 栏目:移动开发
  1. 内存优化:

(1) NDK 和 JNI

(2)对于图片处理使用openGL的texture;

2.bitmap优化:

在生成bitmap时根据bitmap的大小判断是否进行缩放,缩放代码:

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path,opts)
//获取宽高
int width = opts.outWidth;
int height = opts.outHeight;
//重新获取bitmap对象前要将:
opts.inJustDecodeBounds = false;

3.代码的优化:
(1)静态变量太多会引起内存泄露;

(2)使用Application context:如果想保持一个长期生命的对象时需要一个context对象,则调用getApplicationContext()使用Application context;

(3)及时关闭资源,eg:cursor;

(4)使用Bitmap后及时调用recyle()方法回收bitmap对象;

(5)对Adapter优化,使用Holder;

(6)代码的微优化:

    尽量减少创建新对象;

    将类、方法、变量的可见性设为最低;

    针对字符串的拼接使用StringBuffer代替String;

    不要在循环中申明临时变量,不要在循环中捕获异常;

    如果对于线程安全没有要求,尽量使用线程不安全的集合对象;

    使用集合对象如果事先知道其大小,则可以在构造方法中设置初始大小;

    文件读取操作,需要使用缓存类及时关闭文件;

    慎用异常,使用异常会导致性能降低;

    如果程序频繁创建线程,则可以考虑使用线程池;

4.Android UI优化:

(1)尽量使用系统资源;

(2)使用系统的Style要在使用的资源面前在“?android”,而不是@android////

(3)查看系统资源:进入android-sdk\platforms\android-8\data\res;

(4)抽取相同的布局;

(5)精简UI层次:

    merge标签的使用,所有Activity的根节点都是FrameLayout,如果所创建Layout是FrameLayout则使用merge标签作为根节点,其他布局则不可用;

    使用merge标签的两个限制:

    merge只能作为xml布局的根标签;

    当inflater以merge为开头的布局文件时,必须指定一个父ViewGroup并且必须设置attachToRoot为true;

(6)界面延迟加载技术:

    ViewStub是一个隐藏的不占用内存文件的视图对象,可以运行时延时健在布局资源文件。当ViewSub被设置为可见或者调用inflate()方法时才会真的区加载这个布局资源文件;

(7)crash的处理:应用超时无响应;

Thread.setDefaultUnCaughtExceptionHandler(Thread.unCaughtExceptionHandler)


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI