自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员吗?

一切的问题静下心来思考,什么都会跨越

  • 博客(65)
  • 资源 (9)
  • 问答 (4)
  • 收藏
  • 关注

原创 Android获取经纬度的最佳实现方式

Android中获取定位信息的方式有很多种,系统自带的LocationManager,以及第三方厂商提供的一些定位sdk,都能帮助我们获取当前经纬度,但第三方厂商一般都需要申请相关的key,且调用量高时,还会产生资费问题。这里采用LocationManager + FusedLocationProviderClient 的方式进行经纬度的获取,以解决普通场景下获取经纬度和经纬度转换地址的功能。

2024-03-25 10:58:13 1110

原创 Flutter开发中问题及解决方案

Flutter开发过程中遇到的问题及一些注意事项,可以减少一个错误的发生。

2024-03-21 09:00:09 465

原创 Flutter中并发的实现与理解

Isolate可以理解为dart中的线程,但它又不同于线程,准确的说应该叫做协程,协程最大的优势就是它具有极高的执行效率,因为协程中子程序的调用不需要线程的切换,所以对于线程数量越大的程序来说协程的优势就越明显。每个isolate都有自己独立的执行线程和事件循环,以及内存,所以isolate之间不存在锁竞争的问题,各isolate之间通过消息通信。移动端页面(包含Android、iOS、Web)构建的特性—树形结构构建布局、布局解析抽象、绘制、渲染,这一系列的复杂步骤导致必须在同一个线程完成。

2024-03-20 09:08:54 999 1

原创 Flutter中自定义Dialog

Dialog在不同的平台,都是一种重要的交互方式,在Flutter中,Dialog也是有很多种,但大多数场景的交互,都需要根据项目的主题或一些特定的交互去实现自定义的Dialog。

2024-03-19 20:29:28 409

原创 Flutter截屏与长截屏的实现

在做App开发中,获取当前视图的截图基本都会用到的,在Android中,我们可以通过视图的id获取当前视图的bitmap进行编辑操作,在Flutter中想获取Widget的截图针对不同的场景也是需要一个key进行绑定截图。这里介绍的Flutter截图的方式主要分为两种:视图可见时的截图与不可见的截图。

2024-03-17 10:11:58 723

原创 Java中泛型

Java中泛型使代码更加通用,可复用。

2022-08-18 17:46:57 250 1

原创 C++ 序容器

容器作为语言特性的重要部分,不同的容器解决不同的场景下的问题,熟练掌握不同的容器可以提示开发效率。

2022-08-17 16:38:29 707

原创 C++ 类

使用时或类的定义就是对象,使用时必须添加类的头文件。公有成员可以被所有函数访问,私有成员只能被自己的成员函数访问。在静态成员定义时,其static关键字只能在头文件中进行声明,在定义时不能重复static关键字}静态成员不能在类的内部初始化,只能在类的外部定义和初始化每一个静态成员。静态成员一旦被定义,将一直存在于程序的整个生命周期中。重新定义实现基类的函数,添加自己扩展的实现。最后要添加基类的调用。...

2022-08-16 16:40:24 462

原创 C++ 函数

在C++中函数也支持重载(函数名相同,但参数不同)和重写(继承时重写父类的函数)

2022-08-15 15:42:32 331

原创 C++ 友元

允许访问类的私有成员,通常是一些运算符重载函数,使用friend修饰的函数。把一个类声明修饰为友元类,可以访问类的私有成员属性。

2022-08-12 15:18:44 220

原创 C++ 字符串string

在C++中提供了基于char数组实现的string字符串,同时也提供了丰富的函数帮我们实现一些功能需求,也可以根据自己的需求进行定制扩展。

2022-08-11 16:22:59 1074

原创 C++ 函数模板

在C++中函数模板就相当于Java中的泛型,在每个函数前面定义好对应的函数模板,在代码调用时传入对应的类型。

2022-08-10 16:45:20 234

原创 C++逻辑运算符

逻辑运算作为编程中不可或缺的一部分,当有逻辑相关的处理时,C++ 提供了很多相关的逻辑表达式如:if,do-while,switch等。

2022-08-09 15:51:45 7583

原创 C++容器

C++是一种静态的数据类型,在编译器进行类型的检查,代码执行是从上到下的执行,以函数为执行单元。因他是面向过程的。默认的int,short,long都是带符号类型的,添加unsigned 进行修饰,可以设置为无符号类型,表示不接收负数,节约空间...

2022-08-08 16:49:18 240

原创 C++循环的使用

循环作为重复执行某一项动作的主要组成,在C++中提供了for,while,do/while的方式简单快捷的实现循环任务的执行。

2022-08-05 16:54:14 1368

原创 C++变量与基本类型

C++中也包含了很多种类型,比如char,int,bool,float,double等,使用不用的类型进行变量的定义解决不同场景的问题。

2022-08-04 15:53:59 843

原创 C++指针和引用

C++中指针和引用贯穿整个开发流程,其中指针函数,常量指针,智能指针等都是开发中必不可少的,只有了解其使用才能做出更加鲁棒性的项目。

2022-08-03 17:02:04 1253

原创 C++基础语法

C++中函数的入口是main函数,每个C++程序都包含一个或多个函数,但必须包含一个main函数,操作系统是通过main来运行C++程序函数包含四个部分返回类型,函数名,括号包围的形参列表,函数体。一个程序的运行前要经过编译阶段,把对人友好的代码按照一定规则编译解析成对机器友好的代码,然后加载到内存中运行。...

2022-08-01 16:41:22 138

原创 RecyclerView高效使用第三节

在需求开发迭代时,总是会遇到一些特定的交互功能的实现。

2022-07-29 16:47:34 260

原创 RecyclerView高效使用第二节

开发中列表用的最多,但性能可能也是最容易忽略的一部分,在做性能优化时,我们都知在编写布局时尽量采用约束布局,减少布局的嵌套层次,减少冗余的背景以提示布局解析渲染的速度,但这只是优化的其中一点。接下来参考官方提供的API结合实际场景对列表相关的做进一步的优化。.........

2022-07-28 17:50:48 502

原创 RecyclerView的高效使用第一节

在开发的过程中列表相关的布局是最不可或缺的一部分,而掌握一些高效的技巧可以帮助我们提升开发效率的同时,还能优化代码,减少冗余和bug的产生。在UI绘制时,免不了进行细节和样式的调整,如果每次的调整都去run之后查看效果,则效率低下,使用listitem,则可以避免运行,直接使用AndroidStudio自带的预览功能进行调试......

2022-07-26 17:10:22 357

原创 Jetpack之ViewModel源码解析

ViewModel是Jetpack框架集合中不可或缺的重要库之一,替我们管理着项目框架中的数据,相当于一个LiveData的数据总管一样。它将视图与数据分离,对数据进行管理,当应用横竖屏切换时,不再需要考虑数据的存储与恢复。......

2022-07-08 10:42:27 314

原创 基于Kotlin+JetPack实现的MVVM框架的示例

使用Kotlin开发语言实现的MVVM框架的示例。

2022-06-06 16:32:15 945

原创 Java中String的解读

在使用Java进行开发时,用到最多的类莫过于String对象了,在jdk1.8之前,其内部使用了char数组来保存字符串信息。到了jdk1.9之后又变成了byte数组。根据上图所知,String类是final修饰的保证了其不可继承,且不可变的,因此它是线程安全的,其中value数组就是用来保存String的值信息的,而hash值主要用于在HashMap中生成Key的。1,字符串常量池StringPool在开发中,我们大量的使用了字符串,官方为了提升性能,减少内存占用,就在引入了字符串常量池的概念,相

2022-05-13 14:22:48 234

原创 Android中组件间通信解耦的实现方案

在android中进行组件间拆分时,经常会遇到组件间通信的场景,一般是使用接口与实现的方式,但该方式存在一定的耦合,可能出现互相依赖的场景,为了解决该问题,就需要使用到一些组件间间解耦的方案。方案一,使用ARouter的IProvider1)创建一个接口类并继承自ARouter中的IProviderpublic interface Study extends IProvider { void open();}2)新建一个Study接口的实现类,并添加ARouter的注解@Route

2022-05-12 14:43:48 915

原创 Flutter调用原生网络请求的封装

主要正对于Flutter调用原生侧网络请求的封装。

2022-05-10 14:45:16 727

原创 Java中Thread的基础

Thread是计算机中的最新执行单元,在Java中使用多线程可以提高复杂逻辑的执行速度(对一致性要求低的)。一,线程的优先级线程可以设置优先级,范围在1~10,默认的优先级是5,优先级高的线程分配的时间片(操作系统分配给线程的一个个时间片,当线程的时间片用完了就会发发生线程的调度,并等待下次分配)数量要多于优先低的线程。频繁阻塞的线程需要设置较高的优先级;偏重计算的线程则设置较低的优先级。注:线程的优先级不能作为程序正确性的依赖,因为在不同的操作系统上会存在一些差异。二,线程的状态1)New 线

2022-04-26 16:48:20 465

原创 Handler实现原理及源码解析

一,Handler的使用1)创建全局静态常量class Cons{ static final int MSG_WHAT_0x1000 = 0x1000; static final int MSG_WHAT_0x1001 = 0x1001;}2)创建Handler对象private static Handler handler = new Handler(new Handler.Callback() { @Override public bool

2022-04-25 17:40:26 691

原创 Android SDK初始化优化之ContentProvider

2021-06-02 05:08:06.153 5819-5819/com.example.viewpagerstudy D/StudyApplication: attachBaseContext SDK init()2021-06-02 05:08:06.203 5819-5819/com.example.viewpagerstudy D/StudyProvider: onCreate SDK init()2021-06-02 05:08:06.244 5819-5819/com.example.vi

2021-06-03 20:39:36 674 1

原创 Android布局加载流程

在Android中,如果不适用Component的情况下,大部分的UI界面,都是使用xml的形式进行编写绘制,然后在onCreate方法中使用setContentView的方式进行加载的。接下来就来分析setContentView中的布局加载流程1)入口从onCreate方法开始 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setCont

2021-03-03 19:57:19 405 1

原创 Android 11中Activity启动过程源码分析

Android中ActivityManagerService简称AMS,主要负责Android中四大组件创建启动管理。1)从调用startActivity开始startActivity(Intent(this,MainActivity::class.java))2)进入Activity中的startActivity,源码5664行public void startActivity(Intent intent, @Nullable Bundle options) { if (mIn

2021-03-02 19:30:33 1612 4

原创 RxJava之Flowable背压模式

由来,主要解决上游不停的发射大量的事件,导致下游接收不过来,导致的内存泄露背压模式,用于处理大量的事件时采用(当事件超过1000个时建议采用Flowable),用于替换Observable 在2.0版本之后才有,其中Flowable的效果等同于Observable的。使用时,Observable对应的下游是Observer,Flowable对应的下游是Subscriber1. Flowable主要有四种模式 BackpressureStrategy.ERROR 上游发送大量的事件,下游阻塞,处理不

2020-12-11 18:35:13 423

原创 RxJava之异常操作符

使用 thrown Execption 是不标准的异常发射使用emitter.onError 是标准的RxJava的异常发射1,onErrorReturn 操作符的使用1)此操作符只能接收一个标准的异常事件,2)如果中途发生异常,则会终止上游所有的事件发射3)如果不使用异常操作符,则会直接进入下游的onError中4)该操作符发生异常时可以返回一个标识,在下游进行接收处理 Observable.create(new ObservableOnSubscribe<Integer>()

2020-12-10 20:01:42 288

原创 RxJava之线程切换

RxJava执行过程是一个链条式的过程,中间可以自由的切换,默认不配置线程的时,默认上下游都在主线程,事件执行也是同步执行(上游发一次,西安下游就接收一次),如果配置了线程切换,则会变成异步执行线程切换主要用到的操作符Schedulers.io():代表io操作流,网络操作,文件流,耗时操作Schedulers.newThread()常规的创建一个异步线程Schedulers.computation()代表CPU大量计算所需要的的线程AndroidSchedulers.mainThread():

2020-12-09 19:07:24 864

原创 RxJava之变换操作符

变换操作符即为中事件发送和接收之间,对数据进行修改类型变换等操作如图:1,map操作符的使用如下Observable.just(1,2,3) .map(new Function<Integer, String>() { @Override public String apply(Integer integer) throws Exception {

2020-12-07 19:16:30 134

原创 RxJava之过滤操作符的使用

过滤操作符也是在上游和下游之间插入,主要用来进行数据的过滤主要实现过程如下:1,filter操作符 Observable.just("zhan","san","li","si") .filter(new Predicate<String>() { @Override public boolean test(String s) throws Exception {

2020-12-04 19:58:22 154

原创 TabLayout自定义指示器及样式

一,自定义指示器下标1,新建一个名为:layer_tab_indicator的layer-list文件,然后定义想要的样式,其中bitmap 设置成需要的图片格式,也可以根据需求在item标签内添加绘制所需要的下标<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:width="23dp" android:height="6dp

2020-12-03 19:23:10 2364 5

原创 RxJava之合并型操作符的使用

合并型操作符是把多个被观察者合并到一起进行执行其中,startWith,concatWith操作符是,先创建被观察者,在进行合并,而concat,merge,zip都是直接合并多个别观察者,然后再订阅1,startWith操作符的使用执行时,先执行startWith里面的,然后执行 todo2的被观察者 Observable.create(new ObservableOnSubscribe<String>() { @Override pu

2020-12-03 18:46:33 117

原创 OkHttp之线程池的使用

Java从1.5之后提供的线程池,提高线程的复用,因为线程的开启回收很消耗内存线程池的基本创建第一个参数,核心线程第二个参数,非核心线程,线程池的最大容量第三个参数/第四个参数,为线程的闲置时间,如果小于当前设置时间,则会复用,否则当前Runnable回被回收第五参数,为任务队列,把超出任务放到缓存队列中 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,

2020-12-01 21:34:34 2438

原创 Android之线程池的使用场景理解

线程池概念源于JDK1.5版本之后的Executor接口,通过ThreadPoolExceutor进行实现,而ThreadPoolExecutor继承于AbstractExecutorService,AbstractExecutorService 是ExecutorService的实现,ExecutorService继承了Executor接口.线程池的优点1,重用线程池中的线程,避免的频繁创建和销毁线程所带来的内存开销2,有效的控制最大的并发数,避免线程之前因抢占资源而阻塞3,简单管理线程,提供定

2020-12-01 21:22:36 779

QtAndrod实现微信登录及java发送数据到QML界面

实现了Qt 应用微信登录的接入,里面使用了java发送数据到QML界面,及QML调用java方法,使用时需要将android目录下的src/org/qtproject/base/Constants.java中的APP_ID和APP_SECRET切换成自己注册的即可使用

2019-01-28

Qt for android 动态权限申请

Qt for android 动态权限申请工具类

2018-01-30

Android mvp开发模式

简单的实现了一个mvp的小程序,可以简单学习了解

2016-01-18

Android滑动刻度尺

Android中滑动的刻度尺,方便直接以刻度尺显示值,自定义View类

2015-08-11

HTTP请求服务器的增删改查

本案例主要应用于安卓端访问服务器的都数据的增删改查操作

2015-04-22

经典蓝色专业PPT模板

专业好看的蓝色的PPT模板,专业的年终总结,项目答辩,项目总结文档

2015-04-22

大型的供应管理系统

该管理系统可以供java开发者做深入的练习研究,对一些企业也可以直接进行管理,一些资源进行方便快捷的管理,对管理者来说是一个不二的管理选择软件系统。

2015-03-25

好的ps效果处理

方便快捷的学习到一些ps技术,详细的解释每个步骤,不管是初学者或者美工都是有很大的提升空间。

2015-03-25

在线考试系统

用于学校的在线考试和学生老师题库信息的管理

2015-01-09

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

TA关注的人

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