202110-12 Android使用DatePickerDialog显示时间 本文主要介绍了Android使用DatePickerDialog显示时间,分享给大家,具体如下:效果如下:老规矩最后有源码,步骤如下:1.调用Calendar类获取年月日重点:在最后你会发现月份少了个1,这是正常的,api中说这个值原始值为0,自己加个一就好了。2.将年月日的值放入DatePickerDialog中源码如下:布局文件<TextViewandroid:id="@+id/time"android:layout_width="wrap_content"android:layout_height="wrap_co... 继续阅读 >
202110-12 一分钟快速定位Android启动耗时问题 目录前言1.接入TencentMatrix2.改造Application子类3.运行,快速定位总结前言TencentMatrix默认无法监测Application冷启动的耗时方法,本文介绍了如何改造Matrix支持冷启动耗时方法监测。让你一分钟就能给App启动卡顿号脉。1.接入TencentMatrix1.1在你项目根目录下的gradle.properties中配置要依赖的Matrix版本号,如:MATRIX_VERSION=1.0.01.2在你项目根目录下的build.gradle文件添加Matrix依赖,如:dependencie... 继续阅读 >
202109-30 Android activity实现延时跳转功能 什么是ActivityActivity是一个Android的应用组件,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上。一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity。将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容<application>... 继续阅读 >
202109-29 分析Android常见的内存泄露和解决方案 目录一、前言二、Android内存泄露场景2.1、非静态内部类的静态实例2.2、多线程相关的匿名内部类/非静态内部类2.3、Handler内存泄露2.4、静态Activity或View2.5、Eventbus等注册监听造成的内存泄露2.6、单例引起的内存泄露2.7、资源对象没关闭造成内存泄漏2.8、WebView一、前言目前java垃圾回收主流算法是虚拟机采用GCRootsTracing算法。算法的基本思路是:通过一系列的名为GCRoots(GC根节点)的对象作为起始点,... 继续阅读 >
202109-29 解析Android AIDL的实例与原理 目录一、概述二、创建.aidl文件三、生成.java文件四、传输复杂数据五、建立service六、获取服务七、分析调用过程一、概述简单来说,AIDL就是定义一个接口,客户端(调用端)通过bindService来与远程服务端建立一个连接,在该连接建立时会将返回一个IBinder对象,该对象是服务端Binder的BinderProxy。在建立连接时,客户端通过asInterface函数将该BinderProxy对象包装成本地的Proxy,并赋值给Proxy类的mRemote字... 继续阅读 >
202109-29 android UI绘制加减号按钮 本文实例为大家分享了androidUI绘制加减号按钮的具体代码,供大家参考,具体内容如下在项目中我们常常会用到这么一个view。这时候我们会选择使用两个图片来相互切换。其实,只要会基本的2D绘图这样简单的图片自己绘制出来不在话下。先给出我做出来的效果图:接下来,我将给出加号减号绘制的代码以供大家参考:以下是关键代码/***+号*/publicclassAddViewextendsView{protectedPaintpaint;protectedintHstartX... 继续阅读 >
202109-24 深入理解Android热修复技术原理之so库热修复技术 目录一、SO库加载原理二、SO库热部署实时生效可行性分析2.1、动态注册native方法实时生效2.2、静态注册native方法实时生效2.3、SO实时生效方案总结三、SO库冷部署重启生效实现方案3.1、接口调用替换方案3.2、反射注入方案四、如何正确复制补丁SO库五、本章小结一、SO库加载原理JavaApi提供以下两个接口加载一个so库System.loadLibrary(StringlibName):传进去的参数:so库名称,表示的so库文件,位于apk压缩文件... 继续阅读 >
202109-24 深入理解Android热修复技术原理之资源热修复技术 目录一、普遍的实现方式二、资源文件的格式三、运行时资源的解析四、另辟蹊径的资源修复方案4.1、新增的资源及其导致id偏移4.2、内容发生改变的资源4.3、删除了的资源4.4、对于type的影响五、更优雅地替换AssetManager六、本章小结一、普遍的实现方式目前市面上的很多资源热修复方案基本上都是参考了InstantRun的实现。简要说来,InstantRun中的资源热修复分为两步:1.构造一个新的AssetManager,并通过反射调用addAssetPat... 继续阅读 >
202109-24 深入理解Android热修复技术原理之代码热修复技术 目录一、底层热替换原理1.1、Andfix回顾1.2、虚拟机调用方法的原理1.3、兼容性问题的根源1.4、突破底层结构差异1.5、访问权限的问题1.5.1、方法调用时的权限检查1.5.2、同包名下的权限问题1.5.3、反射调用非静态方法产生的问题1.6、即时生效所带来的限制二、你所不知的Java2.1、内部类编译2.1.1、静态内部类/非静态内部类区别2.1.2、热部署解决方案2.2、匿名内部类编译2.2.1、匿名内部类编译命名规则2.2.2、热部署解决方案2.3、有... 继续阅读 >
202109-24 如何通过Battery Historian分析Android APP耗电情况 目录一、电量统计模块概述1.1、软件耗电统计二、battery-historian2.1、概述2.2、获取bugreports2.3、数据分析2.4、bugreport文件分析一、电量统计模块概述耗电信息在设置->电量中能够非常直观的看到。注意,Android所有功耗统计都是通过代码估算,没有集成电路参与汇报。准确度取决于厂商ROM所提供的power_profile.xml文件。由于不同厂商power_profile.xml准确度及源码有差异,因此不同手机、不同版本的数据可能有较大差异... 继续阅读 >
202109-24 详细分析Fresco源码之图片加载流程 目录一、概述二、DraweeView三、DraweeHierachy四、DraweeHolder五、DraweeController的构造逻辑六、通过DataSource发起图片加载七、Fresco图片加载前的逻辑八、Producer九、Producer的组合十、网络图片加载的处理流程十一、总结一、概述Fresco是一个强大的图片加载组件。使用它之后,你不需要再去关心图片的加载和显示这些繁琐的事情!支持Android2.3及以后的版本。如果需要了解Fresco的使用可以访问Fresco使用文档... 继续阅读 >
202109-24 解析Android ANR问题 目录一、ANR介绍1.1、ANR类型1.1.1、KeyDispatchTimeout1.1.2、BroadcastTimeout1.1.3、ServiceTimeout 1.2、ANR发生的原理二、ANR分析示例2.1、查看log日志文件2.2、Trace文件(data/anr/traces.txt)2.3、死锁demo三、其他分析思路四、减少发生ANR概率一、ANR介绍ANR由消息处理机制保证,Android在系统层实现了一套精密的机制来发现ANR,核心原理是消息调度和超时处理。ANR机制主体实现在系统层,所有与ANR相关... 继续阅读 >
202109-24 分析Android Choreographer源码 目录一、前言二、主线程运行机制的本质三、Choreographer简介3.1、Choreographer的工作流程四、Choreographer源码分析4.1、Choreographer的单例初始化4.2、FrameDisplayEventReceiver4.3、ChoreoGrapher的总体流程4.4、doFrame4.4.1、设置当前frame的启动时间4.4.2、顺序执行callBack队列里面的callback4.4.3、调用c.run(frameTimeNanos)执行回调4.5、发起绘制的请求五、源码小结一、前言目前大部分手机都是60Hz的刷新... 继续阅读 >
202109-24 详解Android ContentProvider的基本原理和使用 目录一、前言二、URI(UniformResourceIdentifier)三、MIME四、UriMatcher五、ContentUris5.1、方法使用示例5.2、监听数据变化六、实例说明七、总结7.1、额外补充:隐式Intent中<data>标签一、前言Android的数据存储方式总共有五种,分别是:SharedPreferences、网络存储、文件存储、外储存储、SQLite。但一般这些存储都只是在单独的一个应用程序之中达到一个数据的共享,有时候我们需要操作其他应用程序的一些数据,就会... 继续阅读 >
202109-24 分析CmProcess跨进程通信的实现 目录一、基础知识准备1.1、多进程1.2、Bundle类二、代码解析2.1、AIDL接口2.2、启动分析三、EventReceiver四、ServiceManagerNative五、BinderProvider六、BinderProvider启动分析七、MainActivity八、TestActivity一、基础知识准备1.1、多进程Android多进程概念:一般一个app只有一个进程,所有的components都运行在同一个进程中,进程名称就是app包名。但是每一个进程都有内存的限制,如果一个进程的内存超过了这个限制的... 继续阅读 >
202109-24 浅析Android文件存储 目录一、内部存储二、外部存储2.1、外部公有2.2、外部私有一、内部存储内部存储,位于data/data/包名/路径下是否需要用户权限:否是否能被其他应用访问:否卸载应用数据是否被删除:是内部存储控件不需要用户权限,这意味着我们不需要用户去授权下面的权限:android.permission.WRITE_EXTERNAL_STORAGEandroid.permission.READ_EXTERNAL_STORAGE对于设备中每一个安装的App,系统都会在data/data目录下以应用程序包名自动创建... 继续阅读 >