- 博客(33)
- 收藏
- 关注
原创 Tem模板脚本使用
这个模板程序的作用是方便创建各种工程的代码文件模板的,比如可以创建android中的各种mvp文件,手动创建很麻烦,而且androidStudi4.1后的模板引擎更换了成了插件,开发繁琐,所以开发这个方便大家~~Tem 资源链接:https://pan.baidu.com/s/1nSRBBBxBhpq50ULOVN3bjw提取码:i311Demo:链接:https://pan.baidu.com/s/17e_nzb5AIFMGIX_5qlnf7A提取码:zjfj一、配置环境变量可以把tem.
2022-02-22 11:23:57
1984
1
原创 Android-Launcher-LauncherApplication解析
因为这个app是Launcher,所以这个类是Android系统中的第一个Application的启动,主要做了这些事情各各私有变量的初始化工作为LauncherModel注册广播接收者初始化LauncherProviderpublic class LauncherApplication extends Application { static final String TAG = "LauncherApplication"; /* 这个是为整个Launcerapp 提供
2022-01-29 14:31:39
3087
原创 Pod 常用命令
Pod 常用命令pod 安装和升级# 安装测试版$ sudo gem install cocoapods --pre# 删除老版本的程序包$ sudo gem cleanup# 升级所有程序包$ sudo gem update# 升级 gem$ sudo gem update --systempod 操作创建默认的 Podfile pod init今后升级、添加、删除框架 pod update/// 把Podfile内全部的库初始化或更新并重新安装pod i
2021-12-09 13:47:40
2778
原创 Android中的Service#bindService流程分析
Android中的Service#bindService流程分析文章目录Android中的Service#bindService流程分析一、概述二、流程分析1、Context#bindService2、ContextImpl#bindService3、ActivityManagerNative#getDefault().bindService4、ActivityManagerProxy#bindService5、ActivityManagerService6、ActivityManagerNative#o
2021-11-27 01:10:38
1536
原创 Android系统启动流程
Android系统启动流程文章目录Android系统启动流程一、概述三、流程1、init进程启动2、zygote进程---app_main.cpp3、zygote进程---ZygoteInit.java4、RuntimeInit.zygoteInit5、SystemServer.java6、ActivityManagerService一、概述android版本:7.1.2Android系统的启动从最早的BootLoader->启动linux内核->Android_init进程->a
2021-11-22 18:16:19
2851
原创 VMware下Android编译流程
VMware下Android编译流程文章目录VMware下Android编译流程一、环境二、流程1、下载VMware,然后一路安装,配置Ubuntu18.04LTS的镜像,[镜像下载地址](https://www.ubuntu.com/download/desktop)2、进入ubuntu的命令行中3、配置相关工具4、配置repo,5、建一个工作目录6、初始化仓库,用了7、如果需要特定版本8、同步源码9、等了几个小时,下载完成了,必须有success的字样才可以,不然后面编译会出错10、选择要编译的版本1
2021-11-16 15:29:00
3334
原创 MediaPipe window环境下编译指南(2)
前面的文章已经把Mediapipe的环境配置好了,已经可以编译成apk文件了接下来我们介绍下如何供android使用的aar文件在编译aar之前我先介绍下mediapipe提供了哪些可以编译的aar工程上面的这个截图对应的目录是\rootfs\home\tian\mediapipe\mediapipe\examples\android\src\java\com\google\mediapipe\appsbasic:基础工程,下面的其他工程对它有依赖具体什么含义,可以自己英文查询下
2021-11-09 12:00:07
2397
原创 MediaPipe window环境下编译指南(1)
由于MediaPipe只能在linux下编译,所有需要搭建linux的系统环境,在window系统中WindowsSubsystemLinux 是最方便快捷的linux 子系统了,开搞~~~mediapipe 官方M的文档:Hello World! on Android - mediapipe安装wls(WindowsSubsystemLinux)1、在Microsoft Store 中搜索wls,会出现很多的应用,选择一个ubuntu的系统就可以了,这里我先择了18.04的,下载安装
2021-11-09 11:54:49
1415
1
原创 Android-View-Layout布局过程分析
Android-View-Layout布局过程分析文章目录Android-View-Layout布局过程分析一、概述二、流程1、ViewRootImpl#performTraversals2、ViewRootImpl#performLayout3、View#layout(int l, int t, int r, int b)4、View#onLayout ViewGroup#onLayout5、FrameLayout#onLayout一、概述读这篇文章前,建议先看下Android-View的绘制流
2021-11-04 16:30:00
1797
原创 Android-View-Measure测量过程分析
Android-View-Measure测量过程分析文章目录Android-View-Measure测量过程分析一、概述二、问题三、分析1、整体的流程是什么2、过程分析和解读1、ViewRootImpl#performMeasure2、ViewRootImpl#performMeasure3、View#measure()4、View#onMeasure()或者ViewGroup子类#onMeasure()5、ViewGroup#measureChildWithMargins3、MeasureSpec解读4
2021-11-04 09:53:17
1249
原创 Android系统中Flag的位操作设计
Android系统中Flag的位设计在android的系统类中经常看到精妙的位设计,从而取代了繁多的boolean类型,结构紧凑例如View中的flag* |-------|-------|-------|-------| * 1 PFLAG_WANTS_FOCUS * 1 PFLAG_FOCUSED * 1
2021-11-03 12:07:47
608
原创 Android-View的绘制流程分析
Android-View的绘制流程分析文章目录Android-View的绘制流程分析一、概述二、绘制流程图三、代码分析1、View.requestLayout()2、ViewRootImpl#requestLayout()3、ViewRootImpl#scheduleTraversals()4、ViewRootImpl#TraversalRunnable5、ViewRootImpl#doTraversal()6、ViewRootImpl#performTraversals()7、ViewRootImpl#
2021-11-01 17:45:02
751
2
原创 Android动画-Animation原理解析
Android动画-Animation原理解析一、概述在android中动画分为3类,帧动画、补间动画、属性动画今天要说的就是“补间动画”,补间动画的基类是Animation,具体的实现都在TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation中实现的这个动画的原理是将控件View在时间上连续的绘制,就形成了动画,但是这个动画有个2个主要缺点1、控件的本身没有移动或者旋转,位置信息没有改变,只是在绘制View的时候进行了矩阵
2021-10-29 15:35:44
1051
2
原创 Android属性动画-ValueAnimator原理解析
Android属性动画-ValueAnimator原理解析一、概述android中的属性动画的实现是通过不断的改变View的属性然后刷新,这个改变过程是通过数据的连续补帧和渐变来实现的,那么这个就需要有个脉冲的类来实现这个功能,而且这个脉冲不是随便写的,必须要根据硬件的配置和设置已经硬件环境来触发,这个过程中有个重要的实现类就是ValueAnimator,今天就来说下这个类实现的来龙去脉二、问题1、ValueAnimator的继承关系是什么,有哪些兄弟类,都什么作用?2、ValueAnimator
2021-10-28 11:47:44
1558
2
原创 ThreadLocal原理解析
ThreadLocal原理解析一、概述ThreadLocal 的含义是线程的本地变量,每个线程都有一个自己管理的独立的引用变量,这个其实就是个map(ThreadLocalMap)这个后面说这个主要作用在:在多线程中,而且每个线程都要有同样的初始值,但是每个线程的本地值,只能自己才能修改,其他线程不可以改,具有独立性真正保存数据的是ThreadLoacalMap来做的,ThreadLocal只是个操作工具而已举个例子:在Android的Looper中,为了让每个线程都有一个Looper,就是用的这
2021-10-27 10:48:57
246
原创 EventBus原理解析
EventBus原理解析一、概述EventBus我们都知道是用来做app内部的数据通信的,可以达到很好的解耦合效果,传统的的广播或则回调方式存在着代码耦合度高,代码杂乱,不宜维护的特点,EventBus使用的是订阅者/发布者模式,代码简洁,高度解耦,这个是这个框架产品的背景原因了二、整体架构这个是官方框架的图,这个图描述的结构很清晰Subscriber:这个是订阅者,订阅某个类型的消息比如onMessage(String src) 这个就订阅了接受src的消息,当然代码中还要写入@Subscrb
2021-10-26 16:31:52
1192
原创 MultiDex原理分析
MultiDex原理分析一、MultiDex是什么,解决了什么问题MultiDex 顾名思义就是对分包的Dex文件进行读取加载到ClassLoader的库android 早期的版本中,Dex文件(android对java中字节码 class文件 进行了调整,把所有的class打包到一的Dex文件中)的方法数量是有上限的65536,当一个app中的方法数量超过这个值,在app安装的时候就会抛出错误,无法安装为什么Dex的方法数量上限是65536呢?android在安装一个应用的时候其中会有一步工作是
2021-10-25 17:52:00
2501
原创 AndroidStudio ffmpeg配置
准备:1、ffmpeg库文件,编译好的,这个可以自己编译一、新建工程1、2、像上面一样创建个C++的工程二、导入ffmpeg库include:这个是放的ffmpeg的头文件lib.armeabi-v7a 这个是存放的so文件,我这里只放了armeabi-v7a,如果要放其他的abi架构可以同样放入三、配置文件1、配置gradle要注意的只有2点这个地方是上面架构 就写什么架构如果有报错这个就导入上面的配置好了gradle就配置好了2、CmakeLists的配置(重要
2021-04-22 13:57:50
278
原创 Activity的启动流程
我们经常在用startActivity这个方法,我门今天就来研究下系统究竟是怎么启动一个Activity的startActivity@Override public void startActivity(Intent intent) { mBase.startActivity(intent); }这个类是ContextWrapper,这个是Activity的...
2020-04-23 12:25:54
789
原创 一个Demo让你理解Retrofit的工作原理-动态代理技术
首先先总结下Retrofit核心的三个技术1. java的动态代理技术:2. 解析定义的Service中的各种注解,生成request,然后利用okhttp,生成response3. 利用各种设计模式,尤其是工厂模式,来适配Rxjava 还有动态配置Gson 结果转换器Retrofit 总结起来不外乎就这三点,我们今天只通过一个Demo 分析Retrofit中的动态代理,我后面的文...
2020-01-13 11:37:59
667
1
原创 服务器返回的Json中含有很多转义字符“\"”的问题
这个问题很多是因为Json中嵌套了json造成的比如:{ "A":"{\"fg\":\"dddd\"}", "B":"32146" }这里就含有" 转移字符这种是可以正常解析的
2019-12-12 10:25:58
6405
原创 android中的WebView,JS回调java中的代码线程在子线程
昨天遇到个问题,android中的WebView,js中会调用android的原生代码,但是报了异常,说子线程不能更改UI的那个异常,原来才知道,js回调到java中的方法是浏览器webView在新开的子线程做的操作,如果要更新UI必须要切换到主线程了,@JavascriptInterface private void logg(final String log) ...
2019-12-02 10:04:25
1530
原创 Java 中Object类的wait和notify方法的使用
wait和notify主要用在线程间的通信,wait:让当前调用了wait的对象的所在线程堵塞,前提是当前线程获得了同步锁,不然会抛IllegalMonitorStateException异常notify:通知调用了wait的对象继续执行,不堵塞,前提是调用了notify的对象已经出了synchronized代码块,释放了锁,才能通知成功使用wait和notify要注意几点:wait和n...
2019-11-27 13:42:02
859
原创 synchronized的几种用法
java中,当我们处理线程同步问题的时候就会用到synchronized这个关键字,下面我们介绍下synchronized的几种用法,介绍之前我们先来看下,在java 多线程中 如果没有线程同步会出现什么问题:下面这个是一个测试例子:public class MainClass { public static class MyRun implements Runnable ...
2019-11-26 17:06:31
1017
原创 如何在AndroidStudio中运行java的Main方法
1、首先在AS中导入个module 叫java_library然后这个module的gradle文件中//apply plugin: 'java-library'apply plugin: 'java'apply plugin: 'application'mainClassName = 'java.MainRun'dependencies { implementation f...
2019-11-26 14:28:58
1347
原创 AndroidStudio CMakeList配置
AndroidStudio CMakeList配置详解用户可以新建个工程,对C++ include 打勾 就是C++支持的工程了,我们这里要对build.gradle里的相关配置做了解1、build.gradle中的配置externalNativeBuild { cmake { cppFlags "" p...
2019-11-26 14:06:49
3452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人