自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gsony的博客

让优秀成为一种习惯,让乐观成为一种常态

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 android 车载蓝牙音乐介绍

测试

2020-11-25 15:37:02 5509 28

原创 [0895]《动物传染病学》

动物传染病学

2022-05-31 20:45:53 375

原创 [0893]《兽医外科学》

兽医外科学

2022-05-31 20:43:59 867

原创 [0892]《兽医内科学》主观题

兽医内科学

2022-05-31 20:42:48 1638

原创 [0879]《兽医诊断技术》主观题

兽医诊断技术

2022-05-31 20:41:25 1522 1

原创 报错 Entry name ‘AndroidManifest.xml‘

Entry name ‘AndroidManifest.xml’应用程序的 build.gradleandroid {packagingOptions {exclude ‘AndroidManifest.xml’}}

2021-12-14 16:19:18 2029

转载 【解惑】剖析float型的内存存储和精度丢失问题

【解惑】剖析float型的内存存储和精度丢失问题问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么?现在我们就详细剖析一下浮点型运算为什么会造成精度丢失?1、小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1) 十进制整数如何转化为二进制数 算法很简单。举个例子,11表示成二进制数: 11/2=5 余 1 5/2=2 余 1

2021-02-22 18:13:24 295

原创 Android 应该是很全面的单例模式介绍,共七种

只写实用性第一种:(懒汉,线程不安全)弊端:当有多个线程并行调用 getInstance() 的时候,就会创建多个实例//######################第一种懒汉式,线程不安全 start#####################public class Singleton { private static Singleton instance; //私有构造,此类不可创建 private Singleton() { } //懒汉,线程不安

2020-12-01 15:15:05 209

原创 垃圾收集算法 面试 笔记

面试小结1、标记-清除算法标记-清除算法 是一种常见的基础垃圾收集算法,它将垃圾收集分为两个阶段标记阶段:标记出可以回收的对象清除阶段:回收被标记的对象所占用的空间缺点:1、标记和清除的效率都不算高2、容易产生大量不连续的内存碎片,碎片太多可能会导致后续没有足够的连续内存分配给较大的对象,从而提前触发新的一次垃圾收集动作2、复制算法把内存空间化为两个相等的区域,每次只使用其中一个区域。在垃圾收集时,遍历当前使用的区域,把存活对象复制到另外一个区域中,最后将当前使用的区域的可回收的对象进行回

2020-11-29 12:28:05 138

原创 垃圾标记算法 面试 笔记

面试小结目前有两种垃圾标记算法,引用计数算法和根搜索算法引用计数算法:基本思想就是每对象都有一个引用计数器,当对象的某处被引用的时候,它的引用计数器就加1,引用失效时就减1。当引用计数器中的值变为0,则该对象就不能被使用,变成了垃圾弊端:引用计数算法没有解决对象之间相互循环引用的问题根搜索算法: 这个算法的基本思想就是选定一些对象作为GC Roots,并组成根对象集合,然后以这些GC Roots 的对象作为起始点,向下搜索,如果目标对象到GC Roots 是连接着的,我们则称该目标对象是不可达的,如

2020-11-29 12:27:48 111

原创 运行时数据区域 面试 笔记

面试小结1、程序计数器每个线程都会有一个独立的程序计数器,程序计数器是java虚拟机规范中唯一没有规定任何OutOfMemoryError情况的数据区域2、java虚拟机栈java虚拟机栈和java虚拟机线程生命周期相同并同时创建,栈中存储线程中java方法调用的状态,包括局部变量、参数、返回值以及运算的中间结果等。一个java虚拟机栈报刊了多个栈帧,一个栈帧存储局部变量表、操作数栈、动态链接、方法出口等信息。当线程调用一个java方法时,虚拟机压入一个新的栈帧到该线程的java虚拟机栈中,在方法

2020-11-29 12:27:31 91

原创 Window 的标志

面试小结Window的标志也就是Flag,用于控制Window的显示,同样被定义在WindowManager的内部类LayoutParams中常用的Window标志设置Window的Flag 有三种方法第一种是通过Window 的 addFlags方法private void addWindow() { Window mWindow = getWindow(); mWindow.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN

2020-11-28 11:03:13 468

原创 Window 的属性面试 笔记

面试小结Window的属性 有很多种 它们分别是Type(Window 的类型)、Flag(Window 的标志) 和 SoftInputMode(软键盘相关模式)//#################################分割线 #################################################Window 的类型和显示次序Window 的类型有很多种,比如应用程序窗口、系统错误窗口、输入法窗口、PopupWindow、Toast、Dialog 等总体来

2020-11-28 11:02:32 114

原创 window、windowManager 和 WMS 的关系面试 笔记

面试小结window、windowManager 和 WMS 的关系Window是一个抽象类,具体实现类为PhoneWindow,它对View进行管理。WindowManager是一个接口类,继承自接口ViewManager,用来管理window的,它的实现类为WindowManagerImpl,如果我们想要对Window(View)进行添加、更新和删除操作就可以使用WindowManager,WindowMannager会将具体的工作交由WMS来处理,WindowManager和WMS 通过Bind

2020-11-28 11:02:12 257

原创 Activity栈管理 面试 笔记

面试小结 Activity 任务栈模型//#################################分割线 #################################################ActivityRecord 用来记录一个Activity 的所有信息,TaskRecord 中包含了一个或多个ActivityRecord,TaskRecord 用来表示Activity的任务栈,用来管理栈中的ActivityRecordActivitySta

2020-11-28 11:01:52 165 1

原创 AMS 重要数据结构 面试 笔记

面试小结//#################################分割线 #################################################ActivityRecord内部记录了Activity的所有信息,用来描述一个Activity,它是在启动Activity时被创建的,具体在ActivityStarter的startActivity方法中被创建 ActivityRecord 的部分重要成员变量 需要注意的是其中含有该Activ

2020-11-28 11:01:03 231

原创 AMS 的启动过程 面试 笔记

面试小结AMS的启动是在SystemServer 进程中启动frameworks/base/services/java/com/android/server/SystemServer.javastartBootstrapServices(); //引导服务,用 SystemServiceManager 启动了ActivityManagerService、PowerManagerService 、PackageManagerService 等服务startCoreServices //核心服务,启动了

2020-11-28 11:00:47 218

原创 ActivityManagerService 面试 笔记

面试小结Android 8.0 AMS 家族

2020-11-28 11:00:30 438

原创 Context 面试 笔记

Activity、Service和Application 都间接地继承自 Context,因此我们可以计算出去一个应用进程中有多少个Context,这个数量等于Activity和Service的总个数加1,1指的是Application 的数量//#################################分割线 #################################################Context关联类ContextImpl 内部包含Context类型的mBase对

2020-11-28 10:59:57 141

原创 Content Provider 面试 笔记

面试小结query 方法到AMS 调用过程的时序图//#################################分割线 #################################################AMS启动Content Provider 的过程时序图

2020-11-28 10:59:34 157

原创 广播的注册、发送和接收过程 面试 笔记

面试小结广播的动态注册时序图//#################################分割线 #################################################ContextImpl 到 AMS 的调用过程时序图//#################################分割线 #################################################AMS 到BroadcastReceiver 的调用过程时序图

2020-11-28 10:59:20 160

原创 Service绑定过程 面试 笔记

面试小结ContextImpl 到 AMS 的调用过程//#################################分割线 #################################################Service 的绑定过程前半部分调用关系时序图Service 的绑定过程剩余部分代码时序图

2020-11-27 15:41:55 64

原创 Service启动过程 面试 笔记

面试小结ContextImpl 到 AMS 的调用过程//#################################分割线 #################################################ActivityThread 启动 Service 的时序图

2020-11-27 15:34:25 84

原创 根Activity启动过程中涉及的进程 面试 笔记

面试小结根Activity启动过程中涉及的进程之间的关系//#################################分割线 #################################################根Activity 启动过程中进程调用时序图

2020-11-27 15:31:01 118

原创 根Activity的启动过程 面试笔记

面试小结高频面试Activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程分三个部分:1、Launcher 请求AMS过程2、AMS到ApplicationThread的调用过程3、ActivityThread 启动 Activity//#################################分割线 #################################################1、Launcher 请求AMS过

2020-11-27 15:28:53 240

原创 消息循环创建过程 面试 笔记

面试 小结frameworks/base/core/java/android/app/ActivityThread.javaActivityThread类用于管理当前应用程序进程的主线程,在Looper.prepareMainLooper();中创建主线程的消息循环Looper,在ActivityThread thread = new ActivityThread(); 中创建ActivityThread。在ActivityThread中有一个内部类Handler类,用于处理主线程的消息循环,通过Loo

2020-11-27 15:26:23 77

原创 Binder 线程池启动 面试 笔记

面试小结支持Binder通信的进程中都有一个ProcessState类,它里面有一个mThreadPoolStarted变量,用来表示Binder 线程池是否被启动过。//#################################分割线 #################################################Binder 线程为一个PoolThread, PoolThread 的 run函数来启动一个新线程//###########################

2020-11-27 15:25:21 142

原创 应用程序进程启动 面试 笔记

面试小结这个面试频率就偏高了,记住大概流程1、AMS发送启动应用程序进程请求过程时序图//#################################分割线 #################################################2、Zygote接收请求并创建应用程序进程的时序图...

2020-11-27 15:16:03 82

原创 Launcher 进程启动过程 面试 笔记

面试总结Launcher 在启动过程中会请求PackageManagerService返回系统中已经安装的应用程序信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序//#################################分割线 #################################################Launcher 启动过程时序图//################################

2020-11-27 15:13:38 314

原创 SystemServer 进程启动过程 面试 笔记

面试总结SystemServer 进程被创建后,主要做了如下工作:1、启动binder 线程池,这样就可以与其他进程进行通信2、创建SystemServiceManager,其用于对系统的服务进行创建、启动和生命周期管理3、启动各种系统服务//#################################分割线 #################################################SystemServer 进程主要用于创建系统服务,eg: AMS、WMS、PMS都

2020-11-27 15:10:31 155

原创 zygote 进程启动过程 面试 笔记

面试总结Zygote 进程启动共做了如下几件事:1、创建AppRuntime 并调用其start方法,启动Zygote进程2、创建java虚拟机并为java虚拟机注册JNI方法3、通过JNI调用ZygoteInit 的main 函数进入Zygote的Java框架层4、通过registerZygoteSocket 方法创建服务器端Socket,并通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程5、启动SystemService进程//###################

2020-11-27 15:06:55 131

原创 init 进程启动过程 面试 笔记

面试总结init进程做了很多工作,总的来说主要做了以下三件事:1、创建和挂载启动所需的文件目录2、初始化和启动属性服务3、解析 init.rc 配置文件并启动Zygote 进程//#################################分割线 #################################################android 系统启动流程前几步1、启动电源以及系统启动2、引导程序BootLoader3、Linux 内核启动4、init进程启动//

2020-11-26 17:35:01 167

原创 根据文件路径 获取文件名的三种方法

只写实用性//方法一File tempFile = new File(filePath.trim());String fileName = tempFile.getName();LogUtil.e(TAG, "fileName =" + fileName);//方法二String fileName1 = filePath.trim().substring(filePath.trim().lastIndexOf("/") + 1);LogUtil.e(TAG, "fileName1 =" +

2020-11-26 17:00:16 5647

原创 系统签名方式二 将as生成的jks 注入系统签名 变成带有系统签名的jks

只写实用性文章末尾有对应资料下载,可以直接使用1、通过as生成一个jks文件(eg:myaaa.jks)参考: https://baijiahao.baidu.com/s?id=1614367372473559833&wfr=spider&for=pc此路坑:报错:Given final block not properly padded. Such issues can arise if a bad key is used during decryption.原因:as生成的

2020-11-26 15:40:15 529

原创 系统签名方式一 将普通apk注入系统签名成系统apk

只写实用性文章末尾有对应资料下载1、获取signapk.jar注:网上说的这个路径(out\host\linux-x86\framework)获取的signapk.jar是会报main函数找不到错误的,是因为这个路径的jar包没有main函数入口,他只是提供给系统用的,系统的其他地方会调用这里的方法进行签名源码如下:文件为: SignApk.java下载地址:将源码打成jar,参考如下:(未验证)https://blog.csdn.net/qq3892997/article/details/

2020-11-26 15:21:52 497

原创 Android studio 两种方式将项目生成为jar包

只写实用性//##############################################################分割线 ######################################################################1、创建lib库点击File–>New–>New Module—>选择Android Library–>点击Next2、点击 transformClassesAndResourcesWithSy

2020-11-26 11:34:49 476

原创 android studio 优先源码编译解决隐藏文件报红问题

只写实用性1、先整编以后找到jarout/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes_full_debug.jar或是classes.jar2、将framework的jar包放到lib目录下,(这里取名为my_build.jar)3、在module build 下面添加:preBuild内容 preBuilddependencies { ...}preBuild { doLast {

2020-11-25 18:38:11 546

原创 android 设置 webService 超时时间

ksoap2它的2系列的jar包是没有超时时间的,所以看到网上有人说修改源码,在什么ServiceConnection接口中新增一个setConnectTimeOut(int timeOut)的方法时间过了这么久了,我看的博客是10年写的,现在3系列是不用了,可以在HttpTransportSE的构造函数中传先附一段源码说明原因 附使用 // 创建HttpTransport

2018-01-28 18:06:05 1497 1

原创 AlertDialog 横竖屏切换报WindowLeaked / dialog消失

解决办法: 1、在onDestroy添加如下代码 @Override protected void onDestroy() { super.onDestroy(); if (alertDialog1 != null) alertDialog1.dismiss(); }2、在onSaveInstanceState方法,在a

2017-07-24 17:02:06 824

原创 Mac、win VLC播放器 快进的三个快捷键

好记性不如烂笔头,先做个笔记**WinShift + Right 快进3秒 Ctrl + Right 快进10秒 Alt + Right 快进1分钟Mac** command + control + —> 快进3秒 command + option + —> 快进10秒 command + shift + —>

2017-07-06 10:46:56 11157

啊ksoap2的3.2.0jar

这个是ksoap2,3.2.0的jar包,提供链接给博客用,网上有,但不知道csdn上有没有

2018-01-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除