展开

关键词

Android高级开发-APK极致优化

Tint着色器 yifeng.studio/2017/03/30/… 自 API 21 (Android L)开始,Android SDK 引入 tint 着色器,可以随意改变安卓项目中图标或者 View /apk/res/android"> <! -- Pressed state --> <item android:color="@color/red" android:state_pressed="true" /> <! -- Focused state --> <item android:color="@color/light_purple" android:state_focused="true" /> <item android:color="@color/deep_purple" android:state_enabled="true" /> <!

44640

Android开发之逐帧动画优化

Android上如果使用逐帧动画的话,可以很方便地使用AnimationDrawable,无论是先声明xml还是直接代码里设置,都是几分钟的事,但使用AnimationDrawable有一个致命的弱点, 那就是需要一次性加载所有图片到内存,万一帧数多了或者每张图片都比较大,很容易就报out of memory的异常了,所以有必要进行优化。 / 指定绑定的ImageView和图片资源数组以及每张图片的延时 waitAnim.playConstant(); // 循环播放 waitAnim.stopPlay(); // 停止播放 逐帧动画优化到这里结束了 ,后期我们或许可以继续优化,就是防止一个图片帧太大,加载时间过长,我们可以缓存多张,而不是现在的只缓存一张。

98820
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android Studio配置优化,打造开发利器

    今天首先来优化配置我们的Android Studio开发工具,将一些使用很少但占有内存的插件屏蔽,将影响效率的地方进行优化,下一期来专门升级我们的Android模拟器。 通过以上两种方式都能打开Android Studio的设置页面,如下图所示: ? 接下来就可以开始各种优化设置了。 34优化编译速度 Android Studio编译的时候同样可以使用离线,能极大优化编译速度。 三、Project Structure设置 在开发过程中,除了上述Setting的全局优化配置,我们还会对当前Project进行一些配置,入口如下: ? 主要有三块内容的配置。 到此,对于Android Studio的优化配置基本完成了,相信你也已经把自己的利器磨练得非常锋利了,经过下次课程的学习,环境就可以做到最大的优化,然后就等着正式开发学习吧。

    1.7K90

    Android 开发如何做好内存优化

    android开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有 16M,后来的机器一般都为24M,实在是少的可怜 这样就需要我们在开发过程中要时刻注意。不要因为自己的代码问题而造成OOM错误。 JAVA的内存管理: 大家都知道,android应用层是由java开发的,android的davlik虚拟机与jvm也类似,只不过它是基于寄存器的。 在java中,是通过new关键字来为对象分配内存的,而内存的释放是由垃圾收集器(GC)来回收的,工程师在开发的过程中,不需要显式的去管理内存。 总结 不管是java还是android,都应该了解内存分配和垃圾回收机制,工程师要做到写的代码中没有bad code很难,关键是在出现问题的时候该怎么去排查Android内存优化 一、 Android的内存机制

    33570

    Android 优化——启动优化

    Android 优化目录 ---- App 启动方式 冷启动 App 没有启动过或 App 进程被杀,系统中不存在该 App 进程,此时启动即为冷启动。 优化 布局优化 逻辑优化 必要且耗时的逻辑,考虑单独开线程执行 必要不耗时,按优先级高低依次执行 非必要的延迟初始化,等用到再初始化 针对冷启动的欺骗效果 使用 placeholder UI :name=".ui.module.main.LogoSplashActivity" android:screenOrientation="portrait" android:theme ="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN"/ > <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity

    43530

    Android 优化——存储优化

    Android 优化目录 ---- 交换数据格式 Google 推出的 Protocal Buffers 是一种更轻便高效的存储结构,但消耗内存较大。 因此,最好的优化方法就是避免频繁地读写 SharedPreferences,减少无谓的调用。 异步线程 Android 中数据不多时表查询可能耗时不多,不会导致 ANR,不过大于 100ms 时同样会让用户感觉到延时和卡顿,可以放在线程中运行,但 sqlite 在并发方面存在局限,多线程控制较麻烦 SQLiteStatement 使用 Android 系统提供的 SQLiteStatement 来插入数据,在性能上有一定的提高,并且也解决了 SQL 注入的问题。 分类 直接创建索引和间接创建索引 直接创建: 使用 sql 语句创建,Android 中可以在 SQLiteOpenHelper 的 onCreate 或是 onUpgrade 中直接 excuSql

    29720

    Android 优化——网络优化

    Android 优化目录 ---- 利用 Network Profiler 检查网络流量 接口设计 API设计 App 与 Server 之间的 API 设计要考虑网络请求的频次,资源的状态等 故而也是需要优化的一个点。可以在获取图片时告知服务器需要的图片的宽高,以便服务器给出合适的图片,避免浪费。 弱网优化 除了正常的网络优化,还需考虑到弱网情况下 App 的表现。 一般来说,网络延迟在 60ms 内是 OK 的,超过 200ms 就比较糟糕了。 弱网优化,本质上是在弱网的情况下能让用户流畅的使用。 压缩/减少数据传输量 利用缓存减少网络传输 针对弱网(移动网络),不自动加载图片 界面先反馈,请求延迟提交。

    93310

    Android 优化——布局优化

    Android 优化目录 ---- 理想情况下,60 FPS 以上就不会卡顿,就是 1 秒内要有 60 帧,所以每一帧要在 16ms 内绘制完成。 刷新机制可以看Android Project Butter分析或《Android应用性能优化最佳实践》2.1.2 刷新机制一节。 过度绘制 在“开发者选项”中打开“调试 GPU 过度绘制”(对未默认开启硬件加速的界面需要同时打开“强制进行 GPU 渲染”)。 无色:没有过度绘制,每个像素绘制了 1 次。 严重影响性能,需要优化,避免深红色区域。 自定义 View 本身被认为一层,但是 onDraw 里可绘制时可能产生过度绘制,通过 canvas.clipRect 来解决,具体参见 《Android应用性能优化最佳实践》2.4.3 一节。

    46120

    Android 优化——内存优化

    Android 优化目录 ---- 优化的意义 减少 OOM,提高应用稳定性。 减少卡顿,提高应用流畅度。 减少内存占用,提高应用后台运行时的存活率。 减少异常发生,减少代码逻辑隐患。 leakcanary-android-no-op 中没有的 API。 @IntDef,@StringDef 代替枚举 zipalign 优化 apk 节制使用 Service 如果需要使用 Service 来执行后台任务,一定要任务正在执行的时候才启动 Service switch (level) { case TRIM_MEMORY_UI_HIDDEN: // 释放资源 break; } } 图片优化 新申请 Bitmap 与旧的 Bitmap 必须有相同的解码格式,并且在 Android 4.4 之前,只能重用相同大小的 Bitmap 的内存区域,Android 4.4 后可以重用任何 bitmap

    57510

    Android 优化——电量优化

    Android 优化目录 ---- Android 5.0 后用 Battery Historian 工具分析电量。 WakeLock Android 系统本身为了优化电量的使用,会在没有操作时进入休眠状态,来节省电量。 当然,为了便于开发(很多应用不可避免的希望在灭屏后还能运行一些事儿,或是要保持屏幕一直亮着--比如播放视频),Android 提供了一个 PowerManager.WakeLock 的东西. 优化建议 优化网络请求 在蜂窝移动网络下,最好做到批量执行网络请求,尽量避免频繁的间隔网络请求,尽量多地保持在 Radio Standby 状态。 可以在代码中调起电量优化的设计页面,让用户选择是否将应用加入白名单,以在 Doze 模式下能够做一些事情。

    36420

    Android开发笔记(七十四)布局文件优化

    include/merge 布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件。 下面是具体实现的布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width 2、某些控件在代码中声明时需要手工指定style,例如自定义对话框需要在构造函数中指定样式,参见《Android开发笔记(六十六)自定义对话框》;另一个例子是弹窗PopupWindow在设置伸缩动画方法 setAnimationStyle时需要指定动画样式,参见《Android开发笔记(六十五)多样的菜单》。 从截图可以看到,background的覆盖区域只有窗口,且窗口对内半透明、对外不透明 点击下载本文用到的优化布局文件的工程代码 点此查看Android开发笔记的完整目录

    37430

    Android 优化——卡顿优化

    Android 优化目录 ---- Android 系统每隔 16ms 会发出 VSYNC 信号重绘界面(Activity)。 之所以是 16ms,是因为 Android 设定的刷新率是 60FPS(Frame Per Second),也就是每秒 60 帧的刷新率,约合 16ms 刷新一次。 频繁的 GC 优化方法 减少刷新次数 比如进度更新,要进度有变化再去刷新,且保证频率不得高于系统的刷新频率。 避免非必要的刷新 若控件不可见,则无需刷新。 开启硬件加速 原理可见 Android硬件加速原理与实现简介,理解Android硬件加速原理的小白文 Application 级别 <application android:hardwareAccelerated 监控 《Android 应用性能优化最佳实践》2.8 章,主要利用 MainLooper 里的 Printer。

    1.1K20

    android 优化之布局优化

    布局优化的思路很简单,尽量减少布局文件的层级,看过系统源码的都知道,Android view绘制都是逐层绘制的,所以布局的层级少了,decodeview的时候绘制工作自然就少了。 那么如何进行布局的优化呢? 2、减少视图层级<merge />     <merge/>标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。 这时可以使用<merge/>标签优化。 另一个方面,onDraw不要做耗时操作,在google的优化典范中,view的绘制保证在60fps为最佳,这就要求每一帧的时间不超过16ms.

    36760

    Android 网络优化-DNS优化

    解析慢,并非 LocalDNS 最大的问题,它还存在一些更为严重的问题,例如:DNS 劫持、DNS 调度不许确(缓存、转发、NAT)致使性能退化等等,这些才是网络优化最应该解决的问题。 想要优化 DNS,如今最简单成熟的方案,就是使用 HTTPDNS(也可以叫IP直连)。 今天就来聊聊,DNS、HTTPDNS,以及在 Android 下,如何使用 OKHttp 来集成 HTTPDNS。 听说微信有本身部署的 NETDNS,而各大云服务商,阿里云和腾讯云也提供了本身的 HTTPDNS 服务,对于咱们普通开发者,只须要付出少许的费用,在手机端嵌入支持 HTTPDNS 的客户端 SDK,便可使用 OkHttp 是一个处理网络请求的开源项目,是 Android 端最火热的轻量级网络框架。在 OkHttp 中,默认是使用系统的 DNS 服务 InetAddress 进行域名解析。

    56330

    Android性能优化-渲染优化

    所以了解渲染机制,我们在项目的开发过程中,可以有意识的少挖坑。同时要打造一款精品的应用,注意渲染优化也是非常重要的一件事情。 当然目前我们好多同学在开发的工程中,经常会忽略渲染优化这一块,主要的原因可能是 项目没要求,能满足功能则可 缺少意识,没有做性能优化的意识 缺少用工具分析,主观感受不强 需求的苦海,无法脱身(有多少童鞋戳中泪点 尽量在开发的过程中注意,少挖坑。对已上线的项目能够进行优化分析,打造精品。 接下来我们将介绍渲染的底层机制,并针对性地进行优化分析。 这是一个很费时的操作,GPU的引入就是为了加快栅格化的操作 Android在性能优化已经做了很多工作。在CPU将Ploygons和Texture传递到GPU是一个很耗时的过程。 1)通过开发者选项打开过度绘制检测 ? 2)开启后就可以查看应用的绘制情况 ? 这里拿了百度网盘来做例子,还是优化得不错。

    39820

    android 优化之Bitmap优化

    Bitmap优化 一个进程的内存可以由2个部分组成:native和dalvik dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的。 在Android应用里,最耗费内存的就是图片资源。 在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。 public void click(View view) { Intent intent = new Intent(); intent.setAction("android.intent.action.PICK "); intent.addCategory("android.intent.category.DEFAULT"); intent.setType("image/*");

    69470

    针对Android开发的4种优化重载小技巧

    作者:AWeiLoveAndroid 博客:https://www.jianshu.com/p/b74107b6464d 在平时Android开发中,可能会出现某个类有很多个重载方法。 那么遇到这种问题应该怎么最好的优化呢? 1 @Deprecated 注解标记方法过时 建议在哪个版本中使用哪个方法,这样也起一个标记的作用。 【优点】暂时解决了方法维护的问题,开发人员不再为过时方法维护了,而且旧版本也可以使用相应方法,对老版本兼容性比较好。 【缺点】所有的方法都在,还是有那么多冗余代码,还是没从根源上解决问题。

    15430

    Android优化指南

    Android系统中GC内存泄漏的原因 主动回收内存System.gc();、getruntime.runtime.gc 导致内存泄漏主要的原因是,申请了内存空间而忘记了释放。 解决方法2:LruCache      least recentlly use 最少最近使用算法     会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定。 布局的优化 尽量重用一个布局文件,使用include标签,多个相同的布局可以复用 减少一个布局的不必要节点 尽量使用view自身的参数,例如:Button,有一个可以把图绘制在左边的参数:android 代码优化 这部分就是是细微的优化,但是细微多了也就内存节约了 任何一个Java类,包括内部类、匿名类,都要占用大概500字节的内存空间。 开发当中应当尽可能地不使用枚举。

    87670

    android内存优化

    Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它包括电话本身占用的和开发者可以使用的两部分。 Android能在内存中保持的应用越多,用户在切换应用的时候就越快。 作为我的一项工作,我仔细研究了Android应用的内存泄露问题,大多数情况下它们是由同一个错误引起的,那就是对一个上下文(Context)保持了长时间的引用。     在一个合格的Android应用中,你通常能够用到两种上下文(Context):活动(Activity)和应用(Application)。 这样的结果就是Android会从资源中重新载入应用的UI。现在想象一下,你写了一个应用,有一个非常大的位图,并且你并不想在每次旋转时都重新载入。

    25670

    开发者必看:Android UI及API 优化指南

    作为应用的设计者,有些开发者在开发过程中容易忽略一些用户体验方面的问题,从而导致了自己的应用用户体验欠佳。 本期 Android 开发者 FAQ 我们整理了一些开发者们在后台留言的关于 UI 和 API 在用户体验方面的问题,为大家带来了 UI 及 API 的优化指南。 比如,在 Android 系统中,Wi-Fi 设定主页面上显示基本选项,下拉出现高级选项,可以满足各类用户需求。 Q:对无关信息屏蔽似乎可以提升用户的专注度,有哪些方法可以强化这点呢? API:从 22.1.0 版本起,Android 支持库就开始提供 RecyclerView 扩展包,让开发者能够借助大数据集和易变数据更好地设计 UI 界面元素。 从 25.1.0 开始,支持库引入 DiffUtil 帮开发者免去这个枯燥的苦差事。DiffUtil 采用优化算法,减少开发者代码编写量,同时提高性能。 Q:这个年代,帮助文档还有必要存在吗?

    31460

    相关产品

    • 移动金融开发平台

      移动金融开发平台

      腾讯移动金融开发平台(TMF)为银行、互联网金融、保险、证券客户提供一站式、覆盖全生命周期的移动金融服务。核心服务包括APP客户端开发组件、应用加固、环境安全检测等APP开发运营关键服务,帮助金融机构低成本、高效率地打造移动金融服务…...

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券