自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 LinkedList 底层实现

双链表是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。所以删除和插入元素只需要修改链表节点指针就可以了,不像ArrayList一样,ArrayList底层使用数组实现的,每一次删除或修改数组都会移动元素。新增方法 /** * Appends the ...

2019-04-10 14:01:36 6382 4

原创 Android Studio+Github+git+JitPack生成implementation依赖

此篇仅限于自己学习的笔记,有任何不正确的地方望指正。首先了解几个工具的作用 git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完...

2018-05-02 17:39:23 2610 1

原创 查看Android apk签名信息

必须先安装jdk并配置好环境变量,然后运行->CMD->输入以下命令keytool -list -printcert -jarfile app.apkWmImac-52:~ fanyuanhua$ keytool -list -printcert -jarfile /Users/fanyuanhua/2019-10/备忘录记事本/10.25/app-tencent-release-...

2019-10-25 13:28:09 1159

原创 Android中Uri和Path之间的转换

Android Uri to Path现在遇到的常规Uri有两种:媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法生成。直接上代码package com.xinmang.videoeffect.utils;impo...

2019-06-19 17:24:25 9829 4

原创 ArrayList的底层原理-扩容

ArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的ArrayList的扩容机制ArrayList的扩容主要发生在向ArrayList集合中添加元素的时候。由add()方法的分析可知添加前必须确保集合的容量能够放下添加的元素。主要经历了以下几个阶段:第一,在add()方法中调用ensureCapacityIntern...

2019-04-11 14:53:18 2966

原创 Manifest merger failed with multiple errors, see logs问题处理

在android开发的时候,有时候会遇到这样的问题Error:Executionfailedfortask’:test:processDebugManifest’.>Manifestmergerfailedwithmultipleerrors,seelogs但是要命的是,除了这个log,没有什么其他的有用信息了,怎么办…处理方式:首先进入命令行,windows :输入命令gradle...

2018-12-14 10:57:13 876

原创 诸葛IO集成步骤

1.使用AndroidStudio自动导入在app的 build.gradle文件中添加dependencies { compile 'com.zhuge.analysis:zhugeio:latest.integration'}2.添加权限与AppKey<!--需要网络权限--><uses-permission android:name="andr...

2018-12-13 16:53:27 872 1

原创 删除第三方AAR多请求的权限

1.问题:引了第三方的AAR库要求获取手机状态的权限,但我APP不需要,我想删除掉,怎么办答:很简单,只要在添加:http://schemas.android.com/tools 这个工具在manifest文件中,然后在相应的权限上增加:tools:node="remove"即可。算是只有你想不到,没有Google做不到吧。只需要加添如下代码,然后就可以把多余的蓝牙权限给干掉啦。代码如下:&l...

2018-12-12 16:54:42 6272 1

原创 Android-图片的压缩(质量压缩和尺寸压缩)

图片存在的几种形式File:存在于我们的磁盘中,我们通常说的图片大小。Stream即流的形式,比如我们上传网络图片。Bitmap,就是我们通常指内存中图片的大小。质量压缩:图片的质量压缩,会改变图片在磁盘中的大小(File文件的大小),不会改变图片在加载时,在内存的大小。原理:保持像素的前提下改变图片的位深及透明度,(即:通过算法抠掉(同化)了图片中的一些某个些点附近相近的像素)...

2018-11-13 20:36:05 3063

原创 java设计模式之 建造者模式

建造者模式建造者模式有名创造者模式,是将一个复杂对象的构建过程与它的表示分离,从而使得相同的构建过程可以创建不同的表示;创造者模式隐藏了对复杂对象的创建过程,它把复杂对象的构建加以抽象,通过子类继承或者重载的方式,动态的创建具有 复合属性的对象。 public class Packet { private String publisherName; private S...

2018-09-28 14:58:20 151

原创 性能优化之App启动时间

App启动模式分类1.冷启动冷启动状态:系统不存在该应用的进程。启动应用才能创建出应用的进程。一般是中应用在开机后或者系统停止后的第一次启动过程。因为系统和应用在冷启动时需要做跟多的工作所以减少它的启动时间是最难的。建议始终基于冷启动的假设进行优化,因为这样做同样提升了另两种启动状态的表现。冷启动初始时,系统完成三个任务启动和加载应用创建应用的专属进程启动后立刻显示启动...

2018-09-20 09:44:31 407

原创 Android性能优化之apk瘦身技巧

随着项目迭代,新功能的增加。回导致apk越大。那么在下载安装过程中。用户耗费的流量越多。安装等待的时间也会越长。这就意味着下载转化率会越低。那么如何apk瘦身呢?理解APK结构在讨论怎么减小Apk体积之前,理解一个应用的APK结构是非常有帮助的。一个apk文件就是由一个zip压缩包组成,这个zip包含了所有组成你应用的文件。这些文件包含了java的字节码文件,资源文件和一个包含了编译后资源的...

2018-09-18 14:33:51 651

原创 进程和线程之间的区别

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源, 只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个...

2018-09-14 13:39:49 390

原创 Android中Service基础知识

Service基础Service并没有实际界面。而是一直运行在Android系统的后台运行。一般使用Service为应用程序提供一些服务。 或者不需要界面的功能。 - Service的生命周期 Service从启动到销毁的过程1.创建服务2.开始服务3.销毁服务Service需要在AndroidManifest.xml 文件的 中添加注册的代码 &lt...

2018-09-08 13:44:07 237

原创 App之间Activity的使用

App之间的Activity的使用1.调用其他程序中的Activity1.1 直接拨号 调用系统的拨号功能拨打电话,拨号的功能对应的Action是Intent.ACTION_CALL,同时需要为这个Action指定一个Uri 代码如下: Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.p...

2018-09-06 19:01:31 1479

原创 Android中XML的解析

一、使用SAX解析XML SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关信息。 它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。 缺点是不能倒退。二、使用DOM解析XML DOM(Document Object Model) 是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。 它...

2018-09-05 16:47:09 191

原创 Android 获取手机中已安装apk文件信息及启动第三方app

众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager pManager = context.getPackageManager(); //获取手机内所有应用 List<PackageInfo> paklist = pManager.getInstalledPack...

2018-08-30 15:46:26 7139

原创 android中管理activity的全局栈及UncaughtExceptionHandle的使用

android Activity管理类(全局管理Activity) 直接上代码:import android.app.Activity;import android.app.ActivityManager;import android.content.Context;import java.util.Stack;public class ActivityStack {...

2018-08-30 10:49:15 425

原创 activity+ViewPager+Fragment 程序启动时候加载的日志

activity+ViewPager+Fragment 程序启动时候加载的日志*第一种情况:viewPager设置预加载的个数*08-15 17:02:40.467 2141-11653/? I/ActivityManager: START u0 {cmp=com.kekelian/.HealthPush} from uid 10701 on display 0 08-15 17:02:...

2018-08-27 19:43:46 428

原创 Android广播机制概述

1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下: 1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程的不同组件之...

2018-08-27 19:24:40 191

原创 Git操作常用指令

android中的dp、px、dip相关概念https://www.cnblogs.com/JLZT1223/p/6784449.html

2018-07-23 17:00:32 143

原创 Win10下配置Java 环境变量

配置JAVA_HOME首先打开环境变量的配置界面,新建一个系统环境变量:变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_51其中变量值为你的JDK安装目录 配置CLASSPATH与JAVA_HOME的配置方法类似,再新建一个变量名为CLASSPATH的环境变量变量名:CLASSPATH变量值:.;%JAVA_HOM...

2018-07-18 22:15:07 172

原创 Android Studio插件整理

Android Studio插件整理 链接 插件的学习使用。上网学习。仅限于自己收藏。

2018-05-23 09:14:21 178

原创 Android中多屏适配

基础概念 1、px和dpi - px:平常所说的1920×1080只是像素数量,也就是1920px×1080px,代表手机高度上有1920个像素点,宽度上有1080个像素点。 - dpi:要想判别手机屏幕的显示好坏,还要考虑屏幕的宽高(英寸),也就是用dpi即每英寸多少像素来评价屏幕的显示效果。(不然假如手机分辨率是1920×1080,但是屏幕是几十寸的,那显示效果将不会很好,甚至你...

2018-05-14 17:19:42 2049

原创 android studio library生成jar包和aar的方法总结

最近在做视频的,最近自己先前封装了一个library,每次用都要复制很麻烦,有没有一种方法直接做成架包呢,需要的时候直接引架包。于是上网学习查了一些资料,便有了这边文章。本篇是仅限于自己学习的笔记,又不正确的地方望指正。jar包与aar包文件的区别两者区别:*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。*.aar:包含所有资源,class...

2018-04-24 15:39:28 1048 2

原创 jar包与aar包文件的区别

两者区别:*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。*.aar:包含所有资源,class以及res资源文件全部包含如果你只是一个简单的类库那么使用生成的.jar文件即可;如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用.aar文件。...

2018-04-24 10:35:18 172

原创 Android性能优化之布局优化

布局的优化其实说白了就是减少层级,越简单越好,减少overdraw,就能更好的突出性能。例如删除布局中无用的控件和层级;选择性能较低的ViewGroup比如ConstraintLayout;如果布局中即可以使用LinearLayout也可以用RelativeLayout,那就采用LinearLayout。因为RelativeLayout的功能负载,它的布局过程需要花费更多的CPU的时间。A...

2018-04-20 15:32:06 368 1

原创 Android中View的事件冲突

仅限于自己学习的笔记,有不正确的地方望指正。常见的滑动冲突的场景外部滑动方向和内部滑动方向不一致。外部滑动方向和内部滑动方向一致。以上两种嵌套。场景1:主要是ViewPager和Fragment配合使用组成的滑动效果。主流应用几乎都是使用这个效果。在这种效果中,可以通过左右滑动来切换界面,而每个页面的内部往往有是一个ListView。本身这种情况下是有冲突的。但是ViewPage...

2018-04-17 16:50:14 447

原创 View的事件分发机制

这篇View的事件分发机制,仅限于自己学习的笔记,有不正确的地方望指正。所谓的点击事件的事件分发,其实就是对MotionEvent的事件的分发过程,即当一个MotionEvent产生之后,系统就需要把这个事件传递给一个具体的View,而这传递过程就是事件的分发过程。1.点击事件的传递规则public boolean dispatchTouchEvent(MotionEvent ...

2018-04-13 11:57:16 385 1

原创 Android中AIDL使用详解

简介 AIDL:Android Interface Definition Language,即Android接口定义语言,用于生成Android不同进程间进行进程通信(IPC)的代码,一般情况下一个进程是无法访问另一个进程的内存的。如果某些情况下仍然需要跨进程访问内存数据,这时候Android系统就要将其对象分解成能够识别的原数据,编写这一组操作的代码是一项繁琐的工作,但是AIDL对底层进行了抽...

2018-02-27 15:58:51 736 2

原创 设计模式(4)-代理模式

定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用角色抽象角色:声明真实对象和代理对象的共同接口。代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真 实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象

2017-12-27 18:04:11 182 1

原创 设计模式(3)-观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。类图 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作 结合BaseAdapter源码理解一下观

2017-12-27 10:20:16 309 1

原创 设计模式(2)-适配器模式

定义将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。应用场景 当要实现某个特定的功能需要依赖现有的实现,我们不想改动现有程序,但现有的程序又不能完全满足需求时,我们就可以考虑适配器模式适配器参与角色 (1)目标角色(Target):系统所期待实现的目标。 (2)源角色(Adaptee):系统原有的实现,被适配的角色。

2017-12-26 16:16:55 203 1

原创 设计模式(1)-单例模式

定义: 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。特点单例类只能有一个实例。单例类必须自己自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例单例模式构造要点私有的构造方法指向自己实例的私有静态引用以自己实例为返回值的静态的共有方法饿汉式public

2017-12-07 14:13:08 134 1

原创 OkHttp:拦截器之网络请求Log

主要用来日志输出网络请求的参数及回调的实体类信息: 最近研究了Retrofit框架 ,准备接入项目中 ,发现网络请求没有任何参数提示,后来想到使用拦截器,打印rul和参数及实体类的回调。直接上代码吧public class MyInterceptor implements Interceptor { @Override public Response intercept(Chain

2017-12-01 11:27:50 899 3

原创 androidstudio-gradle基础篇

androidstudio中各种gradle配置解释说明项目的Project的配置buildscript { //设置脚本的运行环境 repositories { //支持java 依赖库管理(maven),用于项目的依赖 jcenter() mavenCentral() google() } dependenc

2017-11-29 10:12:05 412 1

原创 Android studio 3.0.1版本出现的问题: Please select at least one of the signature versions to use

Please select at least one of the signature versions to use 请至少选择使用一个签名版本 V1:旧的签名方式,使用jar包V2:Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。打包时选择的签名版本时,要不就只选V1;要不就

2017-11-27 11:52:10 897

原创 Android studio 3.0 版本的出现的bug

android-apt plugin is incompatible with future version of Android Gradle plugin. use ‘annotationProWarning:android-apt plugin is incompatible with future version of Android Gradle plugin. Please use ‘a

2017-11-24 18:11:07 2880 1

原创 Android <activity-alias> 的用法

activity-alias功能Android里为了重复使用Activity而设计的。 activity-alias作为一个已存在Activity的别名,则应该可以通过该别名标签声明快速打开目标Activity。 因此activity-alias可用来设置某个Activity的快捷入口,可以放在桌面上或者通过该别名被其他组件快速调起。activity-alias部分属性讲解a

2017-11-24 11:48:33 1438 1

原创 Error:This Gradle plugin requires Studio 3.0 minimum

今天引入网上的一个开源项目遇到了一个 Error:This Gradle plugin requires Studio 3.0 minimum这样的问题 百度查了一下是因为我的as版本 2.1.3 版本低了。 同时项目急着上线没能更新As 就放弃了 然后百度到了下面的一个方法 解决了就一句话很简单将以下内容添加到gradle.properties中: android.injected.b

2017-11-23 11:46:27 249 1

空空如也

空空如也

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

TA关注的人

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