自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风行天下

一个Android开发者,被转前端了 -。-

  • 博客(109)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 ARouter路由框架原理简单分析

前言ARouter是阿里巴巴推出的一款Android路由框架,官方介绍:一个用于帮助 Android App 进行组件化改造的框架,支持模块间的路由、通信、解耦。github文档地址:https://github.com/alibaba/ARouter/blob/master/README_CN.md一、ARouter解决的问题一般我们使用ARouter的目的,是为了解决组件间activity跳转的问题。众所周知,如果从Activity A跳转到B,原始写法可以这么写:startActivity

2020-08-04 16:29:20 1352

原创 Android Retrofit与Spring后台配合,实现单张、多张图片上传功能

前言最近在学写后台接口,想做个图片上传接口与Android客户端配合使用。Android这边我用的Retrofit网络请求框架。但是发现我把Android这边写好了,后台不知道该怎么接收;后台接口定义好了,Android这边不知道怎么传参。网上的资料也基本都是只讲一方面的,不讲怎么配合使用。那么我自己研究了一下实现了功能,在这里总结下。后台接口这里为了更详细的说明使用方法,我加了个use...

2020-03-09 18:54:19 1011 3

原创 Retrofit+okHttp+RxJava打造一款简单易用的Android下载框架

SimpleDownload 一款Android下载框架的讲解一、最终效果图,及使用方法二、本框架实现的功能特性三、关键功能源码说明1.文件下载和普通网络请求的不同2. 断点续传如何实现3. 如何得到文件下载进度4. 如何把回调切换到主线程本文介绍自己封装的一套下载框架。首先要知道,文件下载和我们平时调接口一样,要发起网络请求的,所以我们先找个合适的网络请求库,这里我们选择Retrofit+...

2019-12-18 21:37:58 580

原创 带着问题看源码 — 面试必备:理解Java线程池的运行原理

简单来说,线程池就是一个线程管理器,可以管理一组线程使其可重复利用。使用线程池的好处在于可以减少创建和销毁线程的开销,同时可避免不受控制的创建新线程可能导致的OOM等问题。本文将按个人理解,对照源码来解答有关线程池的几个关键问题。线程池的构造方法的各个参数是什么作用?线程池对于新来的任务,会怎么分配?Java默认提供的线程池有哪几种?分别有什么特性,适用场景是什么?线程池是如何做到线...

2019-06-30 22:20:10 701

原创 读懂Volley,必须要理解的几个问题

Volley是一个应用广泛的网络请求开源框架,由Google于2013年推出,它可扩展性性强,适合于数据量小,请求频繁的网络请求,用来加载网络图片也很方便,GitHub地址:https://github.com/google/volley。关于Volley的使用介绍和源码解析,网络资料很多,这里就不再写了,可参考:想看框架原理:Volley 源码解析更详细的从使用到源码解析:郭霖的《Voll...

2019-03-14 22:51:09 718

原创 Android组件化开发的实现(二)Android组件之间页面如何跳转和传递数据

前言上一篇文章Android组件化开发的实现(一),讲了组件化架构首先要解决的几个问题:一.如何统一管理编译环境二.如何实现各个组件既能单独调试运行,又能集成到整体里三.如何避免组件之间资源引用本篇文章,我们来讨论组件化架构要解决的一个最重要的问题:四、组件之间如何跳转,传递数据。本文所对应的示例代码,已经上传到这里:https://download.csdn.net/downloa...

2018-12-28 23:54:56 3729 2

原创 Android组件化开发的实现(一)如何统一管理编译运行环境

现在稍微有点规模的App项目,都会采用组件化的开发方式。组件化通俗来说就是把app分成多个部件,各个部件职责较为单一,可以单独修改调试,也可以集成到一起发挥作用,这样就能很方便进行团队协作和版本更新。组件化开发需要解决的几个问题:一.如何统一管理编译环境二.如何实现各个组件既能单独调试运行,又能集成到整体里三.组件之间如何跳转,传递数据四.如何避免组件之间资源引用首先,我们新建一个项...

2018-12-25 22:40:03 1641 1

原创 对ThreadLocal在Handler中的应用的一些理解

前言 JDK源码的ThreadLocal类和Android SDK的ThreadLocal类细节略有不同,但原理和实现的功能是相同的。本文的代码均来自Android SDK源码。ThreadLocal可以翻译为“线程内部存储”,它不是一个线程,而是用于存储对象,线程内部获取到的这个对象是唯一的,而不同线程获取的这个对象则是不同的对象。也即,这个对象的作用域是线程,而不是平常我们使用的包内...

2018-08-02 10:25:24 2361 3

原创 从源码简要分析Handler的原理

Handler我们经常会用到,一般可以用来处理延时任务,或者进行异步耗时操作的同时更新UI等。在使用过程中,不知道大家是否和我以前初学的时候一样有这样的疑惑:一般我们都是在UI线程新建static hander对象,并且实现了它的HandleMessage()方法,然后在其他任何地方通过sendMessage()方法发送的消息,最后都会被handleMessage()所处理,包括子线程里调...

2018-07-24 01:09:57 274

原创 Android AsyncTask的使用及源码解析

AsyncTask, 翻译成中文就是“异步任务”,顾名思义它就是用来处理不同线程相互协作的问题的。 常用的场景比如从网络下载图片并显示的过程,“下载”这个过程得放在后台线程里,而更新进度以及显示图片需要在主线程完成,这时候,用AsyncTask就很方便了。先介绍一下AsyncTask类的一般使用方法和注意事项: AsyncTask类是个抽象类,使用前必须继承并实现它的重要方法:clas...

2018-07-09 11:52:02 819

原创 Android 触摸事件分发和处理机制解析(一)Activity篇

在我们自定义view或者嵌套view时,经常需要处理滑动事件,点击事件等各种交互事件。在处理过程中,我们可能会遇到事件不响应,滑动和点击事件冲突等问题,这时候,如果我们理解Android触摸事件的分发和处理,处理起来就会得心应手。刚开始接触Android触摸事件分发和处理机制的时候,往往会一头雾水,因为处理触摸事件的地方太多了。比如,我们可以对某个activity里的view设置onTou...

2018-03-13 10:44:39 790

原创 Android开发笔记

● ListView几个有用的属性:android:divider="@color/transparent" //设置Listview的各个item之间的分割线颜色为透明,也就是不显示分割线android:listSelector="@android:color/transparent" //设置各个item被点击时的颜色变化,透明则为无变化android:overScrollM...

2016-02-25 23:31:41 832

原创 【如何提取React项目中的公共模块,多个项目共用】

把多个项目的共用部分提取出来成为一个公共模块,然后在各个项目里都引入这个公共模块进行使用,减少维护公共代码的工作量。

2023-12-17 18:01:10 994

原创 React页面点击悬浮按钮滑动定位到页面顶部

Web页面上,当某个页面内容特别多,下拉到底部的时候,想再返回页面顶部就得鼠标滚轮滑好多下,或者没有鼠标的话操作就更麻烦了。这个时候页面右下角往往会放一个悬浮按钮,点击按钮立即滑动到页面顶部,就方便了很多。本文就是此功能的一个简单的实现。在布局文件里加上这个按钮:上面的代码里,IcoTop是自定义的一个图标,你可以替换为自己需要的图片地址。position: fixed 设置按钮的定位方式为基于浏览器窗口定位。这样不管页面滑动到什么位置,这个按钮始终显示在右下角,距离右边和底部60px。zIndex设

2022-06-17 16:41:16 2496 1

原创 React实现文件上传过程中取消上传

项目中经常有上传文件的需求,有时候因为文件太大,用户没耐心继续等,或者发现上传错了,想取消上传的话,该怎么实现呢?先看下上传文件的实现,原本的实现就是页面上一个选择文件的按钮,点击后选择文件,然后上传。选择文件的代码实现这里就不贴了,下面是上传文件的代码示例:这样的代码运行后,文件一旦开始上传就停不下来了。即使关掉页面,文件上传仍然在继续。现在来加上取消上传的功能,我们用到的是AbortController来实现。下面代码里添加注释的部分就是新添加的取消上传及对成功取消后的处理相关代码:如果想取

2022-06-11 21:04:40 1244

原创 在React项目中引入字体文件并使用

在做React项目的时候,发现UI设计给出的设计稿里,某些文字所用的字体,系统默认不支持。比如设计需要的这个字体:EmerlandRegular,即使在css里将文字字体设置为他们,实际效果也显示不出来。 <Typography style={{ fontSize:'22px', fontFamily:'EmerlandRegular', textAl

2022-05-28 22:18:50 6679

原创 Axios添加拦截器刷新token

目录1. Axios基本用法2. Axios基本封装用法3. 添加拦截器的用法4. 注意事项Axios是一款网络前端请求框架,基本用法如下:1. Axios基本用法: const response = await Axios.create({ baseURL: "https://test.api.com", headers: { 'Content-Type': 'application

2022-02-14 21:51:25 1165

原创 Typescript导出json列表数据为csv表格文件

做React项目,有个需求,要求把页面上显示的列表数据导出为表格文件,可以用excel等软件打开。先看下这个页面上显示的列表长啥样:就是上面这个格式的列表,它的数据testList如下:const testList = [ { "course_title":"Course1", "course_category":"Violin", "visit_count":5, "visit_length":264,

2022-01-26 00:08:54 817

原创 如何去掉Mui(原Material UI)的TextField的边框

1.如何去掉Mui(原Material UI)的TextField的边框?如上图,TextField有三种默认样式,都是带有边框的,如果我们想实现下面这种不带边框,仅有背景色的输入框:如何实现呢?你会发现在css里设置border样式是没用的。正确的设置是下面这样:<TextField variant="standard" style={{borderRadius: "6px", background: "#f5f5f5"}} InputProps={

2022-01-04 11:06:01 1478

原创 Javascript 逻辑运算符的使用踩坑记录

之前写Java,逻辑运算符 && || 和!,都得使用boolean类型的值或者返回值是boolean类型的表达式进行运算,如下:int a1 = true, b1 = false;if (a1 && b1) { // OK}int a2 = 0, b2 = false;if (a2 && b2) {//编译不通过}但是Javascript不是,运算符可以对任意类型的数据做操作,在运算过程中会自动转换为boolean类.

2021-08-08 16:58:38 279

原创 前端:JS的数组的遍历、map、filter、find、some、every的用法示例

在JS语法里,如果想要遍历一个列表(数组),比如下面这个userList:const userList = [ { id: 1, name: "Kevin", age: 10, subject: 5, state: 1, },{ id: 2, name: "John", age: 15, subject: 1, state: 0, },{ id: ...

2021-06-28 21:49:47 2324 2

原创 使用Material UI的Table表格控件,如何自定义每行TableRow背景色

如题,先看看如何使用Material UI的Table表格:要实现上面这样的表格,定义数据userList如下: [ { id: 1, name: "Kevin", age: 10, subject: 5, state: 1, },{ id: 2, name: "John", age: 15, subject: 1, state: 0, },{

2021-06-23 11:08:20 1898

原创 Material UI和Formik配合使用时要注意的一些问题

Material UI和Formik配合使用时要注意的一些问题关于Material UIMaterial UI 用法实例关于FormikFormik的使用实例Material UI 和Formik一起使用的坑这段时间应新公司要求,开始搞前端啦,而且要用以前从没接触过的React框架来做,是有点压力的,而且也踩了不少坑。现在把其中一些经验教训总结下。关于Material UI就和饿了么的Element UI是基于Vue的UI框架一样,Material UI是基于React的UI框架,提供了很多封装好的组

2021-05-22 22:07:54 1043 3

原创 一个简单的死锁的java实现

下面代码模拟了多线程情境下,使用synchronized不当造成的死锁:public class DeadlockTest { private static Object lockA = new Object(); private static Object lockB = new Object(); private static int value = 0; private static int another = 0; public static void

2021-02-23 10:22:04 728 1

原创 使用ReentrantLock进行线程同步

模拟两个线程同时进行同一块耗时处理,使用ReentrantLock进行线程同步:下面是正常的同步代码练习:import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class LockTest { private static final Lock lock = new Reentran

2021-02-23 10:06:05 263

原创 几个常用排序算法的实现

import java.util.Arrays;public class SortTest { private static int[] nums = {5,2,9,4,0,7,3,8,6,1}; public static void main(String[] args) { System.out.println("nums:"+Arrays.toString(nums));// int[] result = maoPaoSort(nums);//

2020-12-03 22:01:55 208

原创 Android高级开发面试题总结(很全面,不含答案)

最新想换工作,于是着手改简历,准备面试题,参与面试等,找工作持续了一个月,参与了十几场面试吧,有一线大厂,也有潜力股小公司,面试过后,我都会把能想起来的面试题记录下来。现在事情告一段落,于是做一个总结。某视频app公司面试题:Activity启动模式。Activity生命周期,从A页面打开B页面,两个页面的生命周期。onStartCommand的返回值和参数的作用。Synchroni...

2019-12-12 20:49:24 5172 3

原创 如何研究Android手机上已安装的一个app

如何深扒一个Android app1.手机上安装了一个app,如何得到它的包名?2.如何得到app安装路径?3. 如何得到安装包?4.如何反编译一个安装包?1.手机上安装了一个app,如何得到它的包名?手机连接USB调试,打开该app,windows命令行下敲 adb 命令:adb shell dumpsys activity | findstr ResumedActivitylinu...

2019-12-12 20:37:41 1925 1

原创 前端学习笔记

父布局宽度不固定的情况下,子元素如下设置可以水平居中:.child { width: fit-content; width: -moz-fit-content; width: -webket-fit-content; margin: auto;}父布局如下设置,可以使子元素们垂直居中:.parent { //设置......

2019-12-06 11:02:48 1011 1

原创 Vue+ElementUI实现两级、可动态扩展表头的表格

最近在搞前端开发,遇到个需求,要实现下面这样的列表:需求描述:其中计划数量是要支持动态变化的,而阶段数量也要支持动态变化。比方说图中是3个计划,每个计划包含四个阶段。可能过段时间数据变成了2个计划,每个计划3个阶段,数据这样改变后,前端表格也要能正常显示。而后台的接口也没提供,需要我自行确定了数据结构,做出显示逻辑。那么首先思考一下,难点有两个,一个是二级表头,一个是表头要支持动态变化。我...

2019-11-22 09:38:48 10656 3

原创 RxJava用法入门及操作符讲解,简单易懂

RxJava基础用法讲解:本篇文章从最基础的RxJava讲解,说明RxJava的基本操作符的用法及作用:RxJava是基于观察者模式的,简而言之就是观察者订阅了被观察者,然后被观察者产生的数据变化会通知到观察者,观察者从而作出反应。这里就不多做讲解了。在RxJava里,观察者用Observer类或者Subscriber类表示,其中后者是前者的实现类,两者用法基本相同。被观察者用Observ...

2019-10-16 20:55:42 2276

原创 Retrofit2框架学习

一、Retrofit概述Retrofit是一款开源网络框架,由Square公司推出的,目前最新版本是Retrofit2,源码地址 https://github.com/square/retrofitRetrofit的推出,主要是为了对Square公司推出的另一款网络请求框架OKHttp做封装。(Retrofit并不直接发起网络请求,网络请求仍然是由OkHttp发起的。)Retrofit2+O...

2019-08-23 15:38:25 1245

原创 自定义注解实现简单的ButterKnife功能,简化findViewById和setOnClickListener

ButterKnife我们应该都很熟悉了,在编写布局的时候可以省略很多findViewById、setOnClickListener等代码,精简代码结构。但是项目中实现了组件化之后,ButterKnifeVersion 8.2.0 (2016-07-10)New: Support for library projects. Requires application of a Butter ...

2019-08-18 11:51:54 519

原创 OKHttp3网络框架流程简介

okhttp是一个开源的网络请求框架,由square公司发布,目前比较流行的版本是okHttp3。本文只对okHttp3做大致讲解,不具体分析源码细节等。就从如何使用开始讲起,okHttp3简单的使用步骤如下:1.得到OkHttpClient对象OkHttpClient okHttpClient = new OkHttpClient.Builder() //建造者模式,可添...

2019-08-10 17:02:50 567

原创 AndroidManifest中meta-data动态修改的问题

本文记录一下我在研究Android的meta-data所得的一些收获和坑,希望大家少走弯路。项目中集成一些第三方的API时,按其官方文档,经常需要在AndroidManifest文件中的application标签下加上meta-data配置。比如如下友盟的配置:一、meta-data的配置和动态获取 <application android:name=".MyA...

2019-07-17 10:59:29 10048 5

原创 真实有效,解决Android studio项目报错ERROR: Unable to resolve dependency for...Could not resolve project...

前两天改了项目的一些东西,提交后发现编译老是报错误,但是打包又没问题。报错信息如下:ERROR: Unable to resolve dependency for ‘:xxx@debugProduction/compileClasspath’: Could not resolve project :yyy.Show DetailsAffected Modules: xxx其中‘xxx’...

2019-07-12 23:50:22 21368 1

原创 使用uni-app的Native.js开发Android应用,基础语法说明

前言uni-app是一个开源前端框架,是用vue.js开发的,可以实现跨平台的开发。地址:https://github.com/dcloudio/uni-app而Native.js是使用uni-app开发时可以用到的一种开发技术,以下介绍摘自《5+ App开发Native.js入门指南》:http://ask.dcloud.net.cn/article/88本文只是对上面这个文章的一些摘抄和...

2019-05-24 09:56:28 15398 2

原创 Android XML解析之PULL解析 简单示例讲解

上一篇文章用一个简单例子讲了下SAX方式解析XML文件的用法及特点,可点击查看:Android XML文件解析之SAX解析 简单示例讲解本篇文章,我们接着用个简单例子展示一下PULL方式解析XML。先介绍下PULL方式解析XML的特点,它和SAX方式的相同之处是都是事件驱动的流式解析方式,一边读取XML内容一边解析,不可暂停或者倒退,直到结束。效率高,占用内存小。而和SAX解析的不同点在于...

2019-03-06 20:51:25 1746

原创 Android XML解析之SAX解析 简单示例讲解

Android开发里,解析xml是很常见的场景了,其中SAX解析与PULL解析是两种比较常用的解析方式。还有DOM解析不太常用,因为它需一次性把xml文件加载到内存里,如果是大文件的话,很占内存,影响性能。而SAX(Simple API for XML)解析是事件驱动的流式解析方式,并不是把xml全部加载到内存,而是一边读取一边解析,不可暂停或者倒退,直到结束。在解析过程中,会判断当前的节点及内...

2019-03-05 23:08:02 621

原创 对HTTP和HTTPS的一些认识

HTTP(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。HTTPS (HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 比HTTP多了加密的步骤,用于安全的 HTTP 数据传输。HTTP版本演变:http协议...

2019-01-07 21:41:44 216

Android apk 反编译工具

Android 反编译工具,自己在用的。 包含以下工具: apktool:得到资源文件等。 dex2jar:把dex文件转换成jar包。 jd-gui:查看Jar包代码。 Android apk 研究方案看这里:https://blog.csdn.net/fenggering/article/details/103482057

2019-12-12

组件化开发示例代码

代码所对应的文章在这里: https://blog.csdn.net/fenggering/article/details/85254610

2018-12-25

脉冲波形的产生与整形概述

1 555定时器的原理 2 用555定时器组成多谐振荡器 3 用555定时器组成单稳态触发 器 4 用555定时器组成施密特触发器

2013-01-02

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

TA关注的人

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