2021最新Android知识体系总结,真香
作为安卓开发者,除了Bug,经常会碰到下面这些问题:应用卡顿,丢帧,屏幕画面撕裂,操作界面刷新缓慢,UI不美观,布局混乱…这些问题频发的话,年后可能就不用来了。开发App的时候,你是否会觉得界面卡顿?尤其是自定义View的时候。Android应用的卡顿、丢帧等,这些影响用户体验的因素绝大部分都与16ms这个值有关。Android设备的刷新率也是
Wesley13 Wesley13
3年前
java多线程加锁的简单处理办法
    当对数据修改时,如果两个线程同时去修改同一条数据,这样产生的结果就不是我们预期的结果。这时候就需要对修改操作进行加锁,让jvm里同一时刻只能有一个线程能够执行修改方法。    下面是一个未加锁的修改方法:   public void update(Entry entry){    dao.update(entry);
九章 九章
4年前
Android依赖管理与私服搭建
在Android开发中,一个项目需要依赖许多的库,我们自己写的,第三方的等等,这篇文件介绍的就是自己搭建私服,创建自己的仓库,进行对我们自己写的库依赖管理。本文是在macbookpro环境上搭建的,其它操作系统操作方式大致一样的。如果有不一样的地,可以参考官方文档Android中引入依赖的几种方法一直接引
Stella981 Stella981
3年前
Android 8.1实现静默升级踩过的坑
最近在做Android8.1的系统自动升级app的功能,遇到不少坑,特在这里记录下来。首先,我这个自己做的安卓主板,并且安卓系统是经过root过的。如果你的系统没有root,请移步,这篇文章不适合你!先说需求,我的app会自动从服务器上下载最新版的apk安装包,然后自动安装,app监听了android.intent.action.PACKAGE
Stella981 Stella981
3年前
JVM内存区域划分
JVM内存区域划分一、JVM运行时数据区划分根据《Java虚拟机规范》JVM会把它管理的内存划分为若干个不同的数据区域,如下图所示:方法区、堆、栈(虚拟机栈、本地方法栈)、程序计数器。线程私有的意思是指,JVM每遇到一个新的线程就会为他们分配栈和程序计数器。!(https
Stella981 Stella981
3年前
Android开发之使用pull解析XML文件
Android已经集成进了Pull解析器,所以无需添加任何jar文件。android系统本身使用到的各种xml文件,其内部也是采用Pull解析器进行解析的。Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是,Pull解析器产生的事
Stella981 Stella981
3年前
Android手机GPU真弱
        因为要为自己的引擎做跨平台准备,第一准备跨的就是Android,特地用OpenGLES2重写了渲染底层,写了个简单的Demo测试了下性能.显示一个左右走动的帧序列动画精灵(2D)(非骨骼动画),再电脑上同屏30000个无压力(取决于显卡),放到我的2013年旗舰机型的Android4.3机型上,同屏300个就降到了30FPS以下,出现卡顿
Wesley13 Wesley13
3年前
Java中的读写锁ReadWriteLock
ReadWriteLock是JDK中的读写锁接口ReentrantReadWriteLock是ReadWriteLock的一种实现读写锁非常适合读多写少的场景。读写锁与互斥锁的一个重要区别是读写锁允许多个线程同时读共享变量,这是读写锁在读多写少的情况下性能较高的原因。读写锁的原则:多个线程可同时读共享变量只允许一
Stella981 Stella981
3年前
Dalvik源码分析(一)虚拟机概述
Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
Stella981 Stella981
3年前
Android模块化初体验及教程
Android模块化一直是Android开发届一个很火的话题,因为公司业务太多,代码越来越臃肿,越来越难维护,为了提升开发效率,减低代码的维护成本,所以采取了模块化开发方案。我们知道,模块化其实就是讲每个业务,拆分成每个独立的模块,然后通过某种协议来达到模块与模块之间的通信。一般公司的项目的结构大概的如下:!(h