Android 优化目录 ---- 图片资源处理 不要有大于 1MB 的图片,若有需要压缩 PNG 有透明通道,无损压缩,可以硬件加速,但对于一些不会有透明度的大图,比如引导图,背景图仍然可以选择用...WebP 格式图片 图片压缩 无损 ImageOptim 有损 ImageAlpha,TinyPNG PNG/JPEG 转 WebP,智图,iSparta 4.0 以下通过第三方库 webp-android-backprot...获得支持 使用 Android Lint 分析去除无用资源 Analyze - Run Inspection by Name - 输入 Unused resource 开启 minifyEnabled
疑问: (1)了解APK安装流程有什么好处 (2)了解APK安装流程可以解决什么问题 一、可以在安装流程里做什么 安装就分为下面三个阶段,每个阶段可以做些什么工作,可以帮助我们优化安装流程,解决安装后的一些问题呢...(1)安装前、安装中:这两个阶段,第三方应用做不了什么,一般是应用分发APP应用商店、游戏中心、浏览器、应用宝这些应用会关注这两个状态。..." + ".package-archive"); mContext.startActivity(intent); 2.3 session命令安装 使用session安装的原因,是因为从Android 8.0...目录下,解压并扫描安装包,向资源管理器注入APK资源,解析AndroidManifest文件,并在/data/data目录下创建对应的应用数据目录,然后针对dalvik/art环境优化dex文件,保存到...3.4 安装中可以优化的点 安装中,这个过程看上去没有什么可以做的,但是对于厂商应用来说,应用的安装速度,却是可以有很大的提升空间的。如应用更新的差分包升级就是一种常见的增量更新方式。
sched gfx view wm 查看每个函数的耗时 通过 Android Studio Profiler 启动应用查看 为什么会出现白屏 在应用启动过程中 ActivityStack 的 startActivityLocked...view : null)); wm.addView(view, params); 如何优化 启动优化步骤分类 白屏的视觉优化 MultiDex 优化 逻辑代码优化 首页布局优化 白屏的优化 对于白屏启动页面的优化...,根据上述的代码分析,可以通过设置主题,为 windowBackground 添加与启动页一致的图片,视觉上可以骗过用户 MultiDex 优化 着应用的不断迭代,内部的方法数会不断增加,最终超过方法数上限...:name="com.weex.multidexinstall.MultiInstallActivity" android:launchMode="singleTask" android...:process=":install" /> 逻辑代码优化 在应用启动过程中,我们一般会在 Application 的 onCreate 中加载 SDK 以及读取 SharedPreference 中的值等耗时操作
今天,我将为大家带来 Rxjava创建操作符的常见开发应用场景:联想搜索优化需求 ,并结合Retrofit 与RxJava 实现,希望大家会喜欢。...Carson带你学RxJava系列文章,包括 原理、操作符、应用场景、背压等等,请看文章:Android:这是一份全面 & 详细的RxJava学习指南 目录 1. 需求场景 2....> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical...<TextView android:id="@+id/tv" android:layout_width="wrap_content" android...Demo地址 Carson_Ho的Github地址 = RxJava2实战系列:联想搜索优化 5. 总结 本文主要讲解了 Rxjava的实际开发需求场景:联想搜索优化需求
实际开发应用时,包体积优化是必不可少的。...上一篇文章我们了解了安装包的结构。 本文主要分两部分: 安装包监控、 安装包大小优化。...安装包监控 Android Studio 的 APK Analyser 这是 Android Studio 提供的一个 APK 检测工具,通过它可以查看一个 apk 文件内部各项内容所占的大小,并且按照大小排序显示...安装包优化实践 Lint查找无用文件 使用 Lint 查看未引用资源。Lint 是一个静态扫描工具,它可以识别出项目中没有被任何代码所引用到的资源文件。...image.png 上面就是未使用的资源:会使应用程序变大,并降低构建速度。 还有很多就不多介绍了,感兴趣的可以去玩玩。
文章目录 一、Android 中使用 libwebp.so 库解码 WebP 图片 二、完整代码示例 三、参考资料 一、Android 中使用 libwebp.so 库解码 WebP 图片 ---- libwebp.jar...import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import.../convert-webp Android 中支持的媒体格式 : https://developer.android.google.cn/guide/topics/media/media-formats...NDK 编译构建脚本参考文档 : ndk-build 脚本 : https://developer.android.google.cn/ndk/guides/ndk-build Android.mk...构建脚本 : https://developer.android.google.cn/ndk/guides/android_mk Application.mk 构建脚本 : https://developer.android.google.cn
文章目录 一、Android 中使用 libwebp.so 库编码 WebP 图片 二、完整代码示例 三、参考资料 一、Android 中使用 libwebp.so 库编码 WebP 图片 ---- libwebp.jar...import android.graphics.BitmapFactory import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity.../studio/write/convert-webp Android 中支持的媒体格式 : https://developer.android.google.cn/guide/topics/media...NDK 编译构建脚本参考文档 : ndk-build 脚本 : https://developer.android.google.cn/ndk/guides/ndk-build Android.mk...构建脚本 : https://developer.android.google.cn/ndk/guides/android_mk Application.mk 构建脚本 : https://developer.android.google.cn
UI线程如果被阻塞5秒的话,那么应用程序此时就会弹出ANR的对话框,ANR对应用程序来说是一个很严重的问题。 如何防止应用程序出现ANR,怎么分析查看导致ANR问题的原因?...我们来介绍Android的严格模式。 怎样开启严格模式 有两种开启方式。 开发者选项 进入开发者选项,里面找到启用严格模式,打开。 当应用主线程执行长时间操作的话会闪锁屏幕。...detectLeakedSqlLiteObjects() // SQLite 对象 .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() // 触发违规操作,kill应用...(14269): class com.test.TestActivity; instances=2; limit=1 02-12 21:43:41.580: E/StrictMode(14269): android.os.StrictMode...class com.example.testa.BActivity; instances=2; limit=1 02-12 21:43:41.580: E/StrictMode(14269): at android.os.StrictMode.setClassInstanceLimit
文章目录 一、Android 应用的默认安装目录 二、查找 Android 应用的安装目录 1、查询当前正在运行的应用包名 2、根据包名查询应用安装路径 一、Android 应用的默认安装目录 ---...- 应用安装在 Android 系统中后 , 普通应用 会安装到 /data/app/ 目录下 ; 如果是系统应用 , 会安装在 /system/app/ 目录下 ; 此外 , 还会在 /data/...data/package.name/ 目录下生成该应用的对应目录 , 这是应用的内存存储空间 , 应用拥有该目录下的所有权限 , 存放应用运行时所需的数据 ; 二、查找 Android 应用的安装目录...---- 如果系统是定制的 , 可能应用安装目录不是上述路径 , 这时可以使用下面的方法查找 Android 应用的安装目录 ; 1、查询当前正在运行的应用包名 使用 dumpsys activity.../.NexusLauncherActivity c848feb pid=3004 walleye:/system/app # 2、根据包名查询应用安装路径 上面查询的正在运行的应用中 , 查询起点中文网的应用包名
安装应用 public class InstallUtil { private Activity mAct; private String mPath;//下载下来后文件的路径 public...isGranted = mAct.getPackageManager().canRequestPackageInstalls(); if (isGranted) startInstallN();//安装应用的逻辑...(写自己的就可以) else new AlertDialog.Builder(mAct) .setCancelable(false) .setTitle("安装应用需要打开未知来源权限...= new Intent(Intent.ACTION_DELETE, uri); startActivity(intent); 监听应用安装卸载 XML形式 1、新建监听类:BootReceiver继承...,卸载一个程序ApiDemos程序打印日志如下 卸载了package:com.example.android.apis包名的程序 4、安装腾讯微博,打印日志如下 安装了package:com.tencent.WBlog
上面只是说到了Android的PMS的运行流程,而对于Android apk的整个安装流程并没有过多的介绍。本篇将重点介绍下Android apk的运行启动流程。...1, 将apk文件copy至data/app目录 在之前的文章我们说过,安装应用 Intent 的是 PackageInstallerActivity,但这个类厂商可以随意修改,这个类也并没有在 android.jar...在接受到 INIT_COPY 消息后,将要安装的参数信息加入到 PendingInstalls 中去,如果是第一个安装,还需要发送 MCS_BOUND 消息,用于触发实际安装过程。...系统并不会直接执行.dex,而是会在安装过程中执行dexopt操作来优化.dex文件,最终android系统执行的时优化后的’odex’文件(注意:这个odex文件的后缀也是.dex,其路径在data/...对于dalvik虚拟机,dexopt就是优化操作,而对于art虚拟机,dexopt执行的则是dex2oat操作,既将.dex文件翻译成oat文件。
我们在开发过程中,如果不注意性能的优化,代码的优化等等,可能会导致应用程序的卡顿和效率极慢,所以开发过程中,注意细节,注意代码的编写和变量,常量的使用,可以提高我们软件的速度和效率。...1.代码的优化 少用浮点运算、文件、pipe、数据库访问 用高效的方式:StringBuffer代替大量临时String,SoundPool代替多个MediaPlayer,texture代替canvas...2.调整程序的进程结构 减少进程数量(善用ViewStub、ViewSwitch等) 减少进程周期循环次数,及时让进程休眠 不编写长寿代码,只在需要时运行,服务应快速完成并立即结束 3.界面设计及相关优化
在这篇文章中,我将分享我们的合作伙伴的工作,优化他们的 Android 应用和游戏(Go 版)。...针对 Android(Go 版)设备和具有相同体验的所有其他设备使用相同的应用程序。在这种情况下,您正在优化现有应用程序以便在这些设备上顺利运行,并且您的现有用户可以从这些优化中获得性能优势。...确定应用策略后,在优化您的应用时需要考虑一些关键因素: 确保您的应用没有 ANR 和崩溃 针对 Android Oreo 您安装的应用程序要低于 40 MB,游戏要低于 65 MB 应用程序的 PSS...保持安装的大小很小 ? APK 大小和安装率之间存在非常明显的相关性:APK 大小越小,安装量越高。使用 Android(Go 版)的人对磁盘大小非常敏感,因为这些手机通常存储容量有限。...总体而言,当您考虑如何让 Android 应用程序准备就绪(Go 版)时,请记住上述各种优化和调整。通过使用上述指导,所有开发人员已经完成了优化其应用和游戏的工作,我相信您将能够取得类似的成果!
可能所讲解的内容偏向理论概念,因此这篇是流畅度优化实操,整篇主要分三层,UI层、代码逻辑层、IO层来讲述各个优化点,其中还会穿插多个辅助检测插件。可谓干货满满,希望对大家有用。...(注意:我们用模拟器作为例子,先用模拟器运行打开你的应用,再打开Hierarchy Viewer面板。) ?...代码逻辑层优化 经过上述的分析调整后,我们接着分析一下关于代码逻辑层的优化。...同样是通过Android Device Monitor面板,在下图左方选中需要分析的应用,再点击左上角按钮,当你觉得数据收集足够时,再次点击那个按钮即可,这时Traceview会自动打开trace文件。...流畅度优化经验总结 最后我来总结一下通篇对流畅度优化上的经验: UI布局优化 使用LinearLayout代替RelativeLayout,因为LinearLayout性能上稍微好一点 如果复杂的布局,
tag) 方法分析 三、 Android 应用进程分析 上一篇博客 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介...应用中启动普通 Android 应用的源码 ; 一、 Launcher 应用 startActivitySafely 方法分析 ---- 在 Launcher 应用中 , 点击快捷方式图标 , 调用...onClick 方法 , 如果判定点击的图标组件时应用图标 , 会触发调用 startActivitySafely 方法 , 启动该图标对应的 Android 应用 Activity 界面 ;..., 在该方法中 , 启动 Android 应用的启动 Activity ; 3 ....\launcher2\Launcher.java 界面中定义 , 该界面是 Launcher 应用的主界面 ; 三、 Android 应用进程分析 ---- 1 .
移动应用性能优化 之友盟 前言 正文 一、问题 1. ANR 2. NullPointerException 二、友盟使用 1. 创建平台应用 2....当时这个读者就找到我,然后我就开始排查,首先是启动App的时候做了什么,这里还会涉及到一个点,那就是App的启动优化,这个点很关键。...所以使用Java开发Android的时候要特别注意这一点,注意null。这一点Kotlin就做的很好,因为空安全这个特性。...创建平台应用 登录后点击 进入工作台,这里可以查看应用信息,如果还没有创建过应用就添加新应用。 在友盟上创建应用,获取AppKey, 注册应用。...这里有一个预初始化和一个正式初始化,预初始化在程序第一次安装运行时使用。在用户同意了隐私政策之后调用正式的初始化,比如这样 好了,现在基本上就完成了对接的工作,下面就来使用它。 2.
方法 ( 应用创建 ) 四、 启动优化项目 一、 应用入口函数 ActivityThread 主函数 main ---- 1 ....Android 应用主函数简介 : 安卓应用的 main 函数定义在 ActivityThread.java 中 , 该主函数被封装起来了 , Android 应用在编译之后 , 是需要被打包到 apk...安装文件中的 , 这是整个应用的入口函数 , 这个入口文件就是 ActivityThread.java 类 ; 安卓应用主函数 : Android 开发者开发安卓应用时 , 是不需要自己定义主函数的...\app\ActivityThread.java , 这是 Android 应用的入口主函数定义文件 二、 ActivityThread 类 attach 方法 ( 应用加载 ) ---- 1 ....\app\ActivityThread.java , 这是 Android 应用的入口主函数定义文件 四、 启动优化项目 在 Launcher 应用点击图标后 , 启动应用 , 系统为应用开启进程
移动应用性能优化 之友盟 前言 正文 一、问题 1. ANR 2. NullPointerException 二、友盟使用 1. 创建平台应用 2....App是一个天气的App,可以实时定位你当前的所在位置,查询到当地的天气,并且提供地图定位模式和语音输入快速查询的方式,项目的源码地址如下:GoodWeather,不方便下载源码的可以直接通过二维码下载安装体验一下...当时这个读者就找到我,然后我就开始排查,首先是启动App的时候做了什么,这里还会涉及到一个点,那就是App的启动优化,这个点很关键。...创建平台应用 登录后点击 进入工作台,这里可以查看应用信息,如果还没有创建过应用就添加新应用。 在友盟上创建应用,获取AppKey, 注册应用。...这里有一个预初始化和一个正式初始化,预初始化在程序第一次安装运行时使用。
Android 优化目录 ---- App 启动方式 冷启动 App 没有启动过或 App 进程被杀,系统中不存在该 App 进程,此时启动即为冷启动。...启动时间检测 adb adb shell am start -W [应用报名]/[Activity的全路径名],得到三个时间值: ThisTime 一般和 TotalTime 相同,如果应用启动开启了一个过渡用的全透明页面预处理一些事情...TotalTime 应用启动时间,包括创建进程、Application 初始化、Activity 初始化到显示。 WaitTime 一般比 TotalTime 大,包括系统的耗时。...代码打点 Application 的 attachBaseContext 在应用进程首先创建时调用,可做冷启动的开始打点。...优化 布局优化 逻辑优化 必要且耗时的逻辑,考虑单独开线程执行 必要不耗时,按优先级高低依次执行 非必要的延迟初始化,等用到再初始化 针对冷启动的欺骗效果 使用 placeholder UI
Android 优化目录 ---- 交换数据格式 Google 推出的 Protocal Buffers 是一种更轻便高效的存储结构,但消耗内存较大。...因此,最好的优化方法就是避免频繁地读写 SharedPreferences,减少无谓的调用。...异步线程 Android 中数据不多时表查询可能耗时不多,不会导致 ANR,不过大于 100ms 时同样会让用户感觉到延时和卡顿,可以放在线程中运行,但 sqlite 在并发方面存在局限,多线程控制较麻烦...在应用启动过程中最先初始化完数据库,避免进入应用后再初始化导致相关操作时间变长。...SQLiteStatement 使用 Android 系统提供的 SQLiteStatement 来插入数据,在性能上有一定的提高,并且也解决了 SQL 注入的问题。
领取专属 10元无门槛券
手把手带您无忧上云