自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

戴boy的博客

新手学习

  • 博客(30)
  • 资源 (7)
  • 收藏
  • 关注

原创 性能检测-RAM

简介CPU、FPS 都已介绍过了,自然避免不了要介绍一波内存。内存分为两大类:RAM 和 ROM。RAM:RAM 为运行内存,比如,手机助手的悬浮窗,经常提示的运行内存超过 80% 之类的,指的都是运行内存。ROM:ROM 为存储数据的内存,比如,系统设置界面显示的“总空间128G,剩余32.2G”,指的是 ROM。本篇所说的性能检测-内存,主要说的就是 RAM。实现原理在你对某件事无从下手的时候,不妨去看看大佬们的写法。Debug.MemoryInfo这个类我们或许都没听说过,不过

2020-10-16 17:30:30 1299

原创 性能检测-FPS

简介要进行 FPS 检测,自然要先理解 FPS 的概念。FPS 即 Frames per second。(此处省略 1000 字,请自行百度)在上方的概念中,60 帧每秒以及 16.67 毫秒这两个关键数据代表什么含义呢?又是怎么得来的呢?请阅读UI卡顿优化这篇文档中的「神奇的16ms」一节。好了,假装 FPS 的基本概念我们都已理解了,下面我们看看如何用代码实现 FPS 检测吧!实现方案选择adb shell dumpsys gfxinfo 【packagename】执行以下命令,我们可以

2020-10-15 18:13:47 7439

原创 性能检测-CPU

简介要想给用户好的体验,性能优化是必不可少的,但是要进行性能优化要先进行性能检测,只有查出了问题,才能“对症下药”。本篇主要讲解如何通过代码对 CPU 进行性能检测,讲解简单用法及部分原理。原理(Android 8.0 以下)获取整机CPU使用情况要查看机器的CPU使用情况,可通过查看/proc/stat 文件,该文件包含了所有自系统启动以来累计的CPU活动信息。查看方式:在 adb shell模式下,输入cat /proc/stat在 root 手机上查看 /proc/stat 文件内容

2020-10-15 18:12:47 875

原创 变"废"为宝--Android手机变服务器

前言如果你家有很多的闲置 Android 手机,你可以选择转二手卖了,也可以选择像小编一样,尝试着变"废"为宝–一分钱不花的变成一台 Linux 服务器~先说下实际测试结果:可安装 jdk和Tomcat,外网也可访问~如何实现的呢?请细看下文,相信肯定会对你有所帮助!具体流程设备需求闲置安卓手机一部,我的是 vivo Y37A。 要获取root权限。如果总root失败可以刷下机(刷...

2019-11-27 08:21:43 7870 2

原创 Appium自动化测试

相关链接官网:http://appium.io/使用Java编写API文档:http://appium.github.io/java-client/学习文档:https://www.cnblogs.com/fnng/p/4540731.html个人站点:http://per-dyw.xyz/技术展示安装(仅Windows)若电脑上未安装node.js,请先安装node.js下载安...

2019-09-20 16:51:27 1017

原创 Android热修复-Robust

什么是热修复热修复(也称热补丁、热修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。通常情况下,热修复是为解决特定用户的具体问题而制作。正常开发流程热修复开发流程热修复优势修复什么热修复框架的对比按公司团队划分:类别成果阿里系AndFix、Dexposed、阿里百川...

2019-09-20 16:47:47 1027

原创 编译报错,方法数过多解决方案

在android开发的过程中,随着app的功能和代码的增加,总会在一次编译后遇到一种报错:android中方法数超过64k,即64 * 1024位数的限制。在android官方api中给出了这个问题的解决方案《配置方法数超过 64K 的应用》,让你完美的规避64k的限制。方法数超过64k解决方案1.minSdkVersion>=21,只需要在build.gradle中设置multiDe...

2019-05-29 09:07:48 557

原创 UI检测(Hierarchy Viewer和Layout Inspector)

工具推荐UI检测的工具,Hierarchy Viewer和Layout Inspector。Hierarchy Viewer官方地址Layout Inspector官方地址虽然Hierarchy Viewer已经废弃了,但感觉还是有必要介绍一下的。Hierarchy Viewer工具打开方式AS版本:3.3.2 打开方式:本地安装SDK目录->sdk->tools-&...

2019-05-14 19:23:38 2531

原创 Robolectric升级篇

国内 Robolectric 相关的文档是在太少了,特写此篇,加深记忆代码层面小优化基类@RunWith(RobolectricTestRunner.class)@Config(constants = BuildConfig.class, sdk = 26)public abstract class BaseRobolectric { @Before public vo...

2019-01-07 17:10:30 713

原创 Android studio JNI搭建

Android原生开发人员可能需要的jni搭建step1:CMake,LLDB,NDK下载step2:NDK本地环境配置1)打开terminal(终端)输入:vim ~/.bash_profile,回车2)按英文键 i 进入编辑模式,在里面添加 export PATH=${PATH}:你的NDK路径3)按esc 退出,并输入wq回车4)输入source ~/.b...

2018-12-06 13:46:45 381 1

原创 Robolectric基础篇

因公司需求,需要学习Robolectric测试框架,在网上找了很久,发现真的没有那么多的人写单元测试,关于Robolectric的资料真的很少,找到的资料,多多少少都有些问题,东拼西凑下才完成了Robolectric的搭建和测试环境的配置AS的要求Android studio 版本大于等于3.0(我的AS为3.1.2)配置须知导包//目前最新为3.8t...

2018-07-13 18:06:56 3306 1

原创 模板模式

定义一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行优点封装不变部分,扩展可变部分提取公共代码,便于维护行为由父类控制,子类实现缺点每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大第一步创建一个抽象类,它的模板方法被设置为 final (Game.java)public abstract cla

2017-11-23 10:30:02 152

原创 策略模式

策略模式定义定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换优点算法可以自由切换避免使用多重条件判断扩展性良好缺点策略类会增多所有策略类都需要对外暴露注意项如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题第一步方法接口(AllMethod.java)public interface AllMethod { public int

2017-11-20 16:07:36 315

原创 原型模式

定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象优点性能提高避免构造函数的约束缺点配备克隆方法,需要对类的功能进行通盘考虑必须继承Cloneable接口避免构造函数的约束注意事项原型模式是通过拷贝一个现有对象生成新对象的。浅拷贝实现Cloneable,重写,深拷贝是通过实现Serializable读取二进制流第一步(最简单的)public class Per

2017-11-16 10:48:11 157

原创 建造者模式

定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示优点建造者独立,易扩展便于控制细节风险缺点产品必须有共同点,范围有限制内部变化复杂,会有很多的建造类注意点与工厂模式相比较,建造模式更加关注与零件装配的顺序第一步创建 Person 类public class Person { private String name; private

2017-11-15 14:41:59 189

原创 适配器模式

目的将一个类的接口转换成客户希望的另一个接口。适配器模式是作为两个不兼容的接口之间的桥梁。优点可以让任何两个没有关联的类一起运行提高了类的复用增加了类的透明度灵活性好缺点过多的使用适配器,会让系统非常凌乱,不易整体把握。如果不是很有必要,可以不使用适配器,而是直接对系统进行重构由于java只能继承一个类,所以至多只能适配一个适配者类,而且目标必须是抽象类 注意事项适配器不是在详

2017-11-15 11:27:39 302

原创 观察者模式

理解对象间的一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于他的对象得到通知并被自动更新主要解决一个对象状态改变给其他对象通知的问题,要考虑到易用和低耦合,保证高度的协作如何解决使用面向对象技术,弱化依赖优点观察者和被观察者是抽象耦合的建立一套触发机制缺点如果一个被观察者对象有很多直接或间接的观察者,要全部都通知到,会花费很多的时间如果在观察者和观察目标之间有循环依赖,

2017-11-14 16:56:57 220

原创 接手Android项目代码后的优化

代码优化的注意点1、单例模式的引用2、extends之后,重复定义3、调用runOnUiThread时,context强转为activity((Activity)context).runOnUiThread(new Runnable() { @Override public void run() { if (mToast

2017-11-14 11:19:00 395

原创 listview中的switch遇到的问题

listview中的switch遇到的问题一、状态的变化选中之后,滑出这个页面,再滑进,会变为未选中状态,解决办法:1、定义一个hashmap,用来存储listview中switch的初始所有状态2、不要在getView中定义,在构造方法中定义for (int i = 0;i<list.size();i++){ if (this.list.get(i).getStatus().equal

2017-11-14 11:18:29 2398

原创 发布到百度平台遇到的问题

一、签名文件:以 .jks 后缀结尾二、Android7.0中APK Signature Scheme v2,v1 的区别V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成

2017-11-14 11:17:24 1212

原创 工厂模式和抽象工厂模式

工厂模式分三类简单工厂模式(Simple Factory) 一个总工厂,想要什么,生产什么工厂方法模式(Factory Method) 总工厂分出多个子工厂,想要什么,要指定总工厂的某个子工厂生产什么抽象工厂模式(Abstract Factory) 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象区别工厂方法模式 一个抽象产品类,可以派生出多个具体产品类

2017-08-09 15:45:27 201

原创 单例模式

注意点单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类必须给所有其他对象提供这一实例优点在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例避免对资源的多重占用缺点没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化懒汉、线程不安全(不支持线程安全)描述: 这种方式是最基本的实现方式,这种实现最大的问题就是不支持多

2017-08-09 11:09:10 230

原创 核心类和类之间的关系

核心类装箱和拆箱装箱:指将基本类型数据值转换成对应的封装类对象,即将栈中的数据封装成对象存放到堆中的过程拆箱:是装箱的反过程,是将封装的对象转换成基本型数据值,即将堆中的数据值存放到栈中的过程 例:int a = 10;Integer obj = new Integer(10);Integer obj1 = 10; //装箱int b = obj; //拆箱String常用方法

2017-08-08 09:55:35 303

原创 Java概述、Java语言基础、面向对象基础

Java概述JDK (JAVA DEVELOPMENT KIT,JAVA开发工具包)JVM (JAVA VIRTUAL MACHINE,JAVA虚拟机)JRE (JAVA RUNTIME ENMRONMENT,JAVA运行时环境)原理源文件(Java文件)(Java编译器编译)-->字节码(.class文件)(本地或网络传输)-->JVM虚拟机(即时编译,解释执行)-->机

2017-08-07 16:58:08 280

原创 初次接触AsyncTask

1、传入三个参数AsyncTask<Params,Progress,Result>Params:启动任务时,输入参数的类型Progress:后台任务执行中返回进度值的类型Result:后台执行任务完成后返回结果的类型2、四种方法:1)doInBackground //执行耗时操作2)onPreExecute //执行AsyncTask之前的操作3)on...

2017-08-07 08:11:07 330

原创 Mac上通过终端向GitHub传输项目

在大神的帮助下,首次实现了在mac上通过终端向GitHub传输项目1、首先确定mac上已经安装了git可以通过git --version查看git版本2、使用cd命令进入到项目所在的目录例如:3、使用git init 如果报错:使用命令:rm -rf .git4、进入GitHub里面,获取到g...

2017-08-04 14:19:14 334

原创 读取SD卡图片,并自动轮播

1、加权限 <!-- 授予读取外部存储设备的的访问权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <!-- 授予写入外部存储设备的的访问权限 --> <uses-permission android:...

2017-06-15 21:00:38 1273

原创 GPS定位+经纬度定位

1、从高德地图下载sdk并放入相应的包2、权限+key:<meta-data android:name="com.amap.api.v2.apikey" android:value="key" />key放自己的!!! <uses-permission android:name="...

2017-06-15 13:13:53 10695

原创 android发送桌面快捷方式

1、权限的设置<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>2、简单的布局<Button android:layout_width="match_parent" android:layout_he...

2017-06-13 21:55:00 645

原创 Android从外部API获取json数据并以listview形式展现

1、权限的设置<uses-permission android:name="android.permission.INTERNET"/>2、android studio加载外包compile 'com.lzy.net:okgo:2.1.4' compile 'com.lzy.net:okrx:0.1.2' compile 'com.lzy.net:okser...

2017-06-12 20:58:52 3605

读取sd卡图片进行轮播

简单的读取SD卡图片进行轮播

2017-06-15

简单的传感器

android简单的传感器

2017-06-13

发送桌面快捷方式

android简单的发送到桌面快捷方式

2017-06-13

手机联系人主要使用tabhost

1、读取手机联系人 2、使用tabhost

2017-06-12

TestAlarm(简易闹钟)

简易的闹钟,用到了SQLite

2017-06-12

TestMusic(简易音乐播放器)

简易的音乐播放器

2017-06-12

TestOkGoHomeWork

使用OkGo获取json并解析,以listview形式展示

2017-06-12

空空如也

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

TA关注的人

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