Android——优化

简介:
  1. 内存优化:

(1) NDK 和 JNI

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

2.bitmap优化:

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

1
2
3
4
5
6
7
8
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的处理:应用超时无响应;

1
Thread.setDefaultUnCaughtExceptionHandler(Thread.unCaughtExceptionHandler)



















本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1608562  ,如需转载请自行联系原作者


相关文章
|
4月前
|
移动开发 监控 前端开发
构建高效Android应用:从优化布局到提升性能
【7月更文挑战第60天】在移动开发领域,一个流畅且响应迅速的应用程序是用户留存的关键。针对Android平台,开发者面临的挑战包括多样化的设备兼容性和性能优化。本文将深入探讨如何通过改进布局设计、内存管理和多线程处理来构建高效的Android应用。我们将剖析布局优化的细节,并讨论最新的Android性能提升策略,以帮助开发者创建更快速、更流畅的用户体验。
69 10
|
5月前
|
Java Android开发
Android面试题经典之Glide取消加载以及线程池优化
Glide通过生命周期管理在`onStop`时暂停请求,`onDestroy`时取消请求,减少资源浪费。在`EngineJob`和`DecodeJob`中使用`cancel`方法标记任务并中断数据获取。当网络请求被取消时,`HttpUrlFetcher`的`cancel`方法设置标志,之后的数据获取会返回`null`,中断加载流程。Glide还使用定制的线程池,如AnimationExecutor、diskCacheExecutor、sourceExecutor和newUnlimitedSourceExecutor,其中某些禁止网络访问,并根据CPU核心数动态调整线程数。
159 2
|
3月前
|
存储 缓存 编解码
Android经典面试题之图片Bitmap怎么做优化
本文介绍了图片相关的内存优化方法,包括分辨率适配、图片压缩与缓存。文中详细讲解了如何根据不同分辨率放置图片资源,避免图片拉伸变形;并通过示例代码展示了使用`BitmapFactory.Options`进行图片压缩的具体步骤。此外,还介绍了Glide等第三方库如何利用LRU算法实现高效图片缓存。
71 20
Android经典面试题之图片Bitmap怎么做优化
|
2月前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin多线程优化策略
【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
59 4
|
1月前
|
安全 Android开发 iOS开发
深入探索iOS与Android系统的差异性及优化策略
在当今数字化时代,移动操作系统的竞争尤为激烈,其中iOS和Android作为市场上的两大巨头,各自拥有庞大的用户基础和独特的技术特点。本文旨在通过对比分析iOS与Android的核心差异,探讨各自的优势与局限,并提出针对性的优化策略,以期为用户提供更优质的使用体验和为开发者提供有价值的参考。
|
3月前
|
Java Android开发 UED
安卓应用开发中的内存管理优化技巧
在安卓开发的广阔天地里,内存管理是一块让开发者既爱又恨的领域。它如同一位严苛的考官,时刻考验着开发者的智慧与耐心。然而,只要我们掌握了正确的优化技巧,就能够驯服这位考官,让我们的应用在性能和用户体验上更上一层楼。本文将带你走进内存管理的迷宫,用通俗易懂的语言解读那些看似复杂的优化策略,让你的开发之路更加顺畅。
69 2
|
3月前
|
Java Android开发 开发者
安卓应用开发中的线程管理优化技巧
【9月更文挑战第10天】在安卓开发的海洋里,线程管理犹如航行的风帆,掌握好它,能让应用乘风破浪,反之则可能遭遇性能的暗礁。本文将通过浅显易懂的语言和生动的比喻,带你探索如何优雅地处理安卓中的线程问题,从基础的线程创建到高级的线程池运用,让你的应用运行更加流畅。
|
4月前
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
217 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
3月前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
81 0
|
4月前
|
调度 Android开发 开发者
【颠覆传统!】Kotlin协程魔法:解锁Android应用极速体验,带你领略多线程优化的无限魅力!
【8月更文挑战第12天】多线程对现代Android应用至关重要,能显著提升性能与体验。本文探讨Kotlin中的高效多线程实践。首先,理解主线程(UI线程)的角色,避免阻塞它。Kotlin协程作为轻量级线程,简化异步编程。示例展示了如何使用`kotlinx.coroutines`库创建协程,执行后台任务而不影响UI。此外,通过协程与Retrofit结合,实现了网络数据的异步加载,并安全地更新UI。协程不仅提高代码可读性,还能确保程序高效运行,不阻塞主线程,是构建高性能Android应用的关键。
63 4