自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

It一zhai男

学如逆水行舟,不进则退

  • 博客(182)
  • 资源 (26)
  • 收藏
  • 关注

原创 Flutter文章汇总

Flutter文章汇总

2022-06-29 15:29:26 349

原创 kotlin标准函数let, run, apply, with, also

kotlin标准函数特点对比标准函数名称作用域中的接收者返回值letit作用域的最后一行的对象runthis作用域的最后一行的对象withthis作用域的最后一行的对象applythis调用对象本身alsoit调用对象本身let与also从上表可以看出,let与also作用域中的接收者都是it,但它们比较明显的不同在于返回值的不同。let返回值是作用域的最后一行的对象,而also返回值是调用对象本身。他们都可以在调用时对调用者进行空

2021-06-01 15:06:49 166

原创 Kotlin协程之withContext

withContext必须在协程或者suspend函数中调用,否则会报错。它必须显示指定代码块所运行的线程,它会阻塞当前上下文线程,有返回值,会返回代码块的最后一行的值。1. 指定代码块所运行的线程它和launch一样,通过Dispatchers来指定代码块所运行的线程,如下所示:runBlocking<Unit> { withContext(Dispatchers.IO){ delay(1000) println("${Thread.currentThread(

2021-05-27 14:49:55 6994 3

原创 Kotlin协程之launch

协程之launch协程需要依赖以下包dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2'}launchlaunch必须放在协程里才行,launch开启的协程不会阻塞所在线程,如下:import kotlinx.coroutines.*fun main() { GlobalScope.launch { // 在后台启动一个新的协程并继续 printl

2021-05-27 13:41:51 5400 1

原创 【Dagger2】一文让你从Dagger2入门到熟练

@Inject注解在属性中表示该属性需要依赖注入,注解的属性不能使用private修饰,只能用默认、protected或public注解在方法中表示该方法需要依赖注入,注解的方法不能是抽象方法,不能是private修饰的注解在构造方法中表示此类能为Dagger2提供依赖关系,如果有多个构造函数,只能注解一个,否则会报错...

2020-04-26 19:34:49 308

原创 【性能】Android内存管理理论篇

注:本文主要来自于谷歌官网1 内存管理概览Android Runtime(ART)和Dalvik虚拟机使用的是分页和内存映射来管理内存。这意味着应用修改的任何内存,无论修改的方式是分配新对象还是轻触内存映射的页面,都会一直驻留在RAM,并且无法换出。要从应用中释放内存,只能释放应用保留的对象引用,使内存可供垃圾回收器回收。这种情况有一个除外:对于任何未经修改的内存映射文件(如代码),如果系统...

2020-04-16 19:16:54 352

原创 【性能】Java对象生命周期

Java对象生命周期对象的生命周期大致可以分为7个阶段:创建阶段(Created)应用阶段(Using)不可视阶段(Invisible)不可达阶段(Unreachable)可收集阶段(Collected)终结阶段(Finalized)对象空间重新分配(Deallocated)创建阶段(Created)在对象创建阶段,一般要经历以下几个步骤才能完成对象的创建过程:为对象分...

2020-04-14 17:21:49 426

原创 【性能】OOM原理解析:LowMemoryKiller原理

1 概述Android的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会带来一个问题, 每个进程都有自己独立的内存地址空间,随着应用打开数量的增多,系统已使用的内存越来越大,就很有可能导致系统内存不足, 那么需要一个能管理所有进程,根据一定策略来释放进程的策略,这便有了lmk,全称为LowMemoryKiller(低内存杀手),lmkd来决定什么时...

2020-04-14 10:53:11 1274

原创 【IPC】Android中的进程间通信(IPC)详解

1 需要的知识点1.1 进程与线程要理解跨进程通信,首先需要理解以下几个知识点1:进程:按照操作系统的描述,进程是资源分配的最小单位,一个进程可以包含多个线程线程:线程是CPU调度的最小单位,多线程需要考虑并发问题。1.2 Android中的多进程Android多进程指的是一个应用中存在多个进程的情况,在Android中,一般一个应用存在一个进程。多进程的情况2:某个应用由于自...

2020-04-13 18:33:05 696

原创 【IPC】Binder跨进程通信机制原理

注:本文查阅网上众多博客,然后总结得出,参阅博客地址见章末附录1 Binder简介1.1 定义定义如图所示(图片来自网上):2 知识储备2.1 进程空间一个进程空间被分为用户空间和内核空间。内核空间是系统内核运行的空间;用户空间是用户程序运行的空间。不同进程间的用户空间数据不可共享,不同进程间的内核空间数据是共享的;同一进程内,用户空间和内核空间都可被系统调用。示意图如下所示:2...

2020-04-13 11:26:16 294 1

原创 【蓝牙】BluetoothAdapter详解

BluetoothAdapter简介BluetoothAdapter代表本地蓝牙设备适配器。BluetoothAdapter可以让我们执行基本的蓝牙任务,如发现蓝牙,查询蓝牙已配对列表,通过已知的MAC地址初始化一个BluetoothDevice实例,并且创建一个BluetoothServerSocket来监听其它设备的请求,启动蓝牙低功耗设备扫描等。要获取代表本地蓝牙适配器Bluetoot...

2020-04-10 19:08:09 6452

原创 【面试】Android面试题集锦

持续更新…Handler谈谈消息机制Handler作用 ?有哪些要素 ?流程是怎样的 ?一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?Handler 引起的内存泄露原因以及最佳解决方案软引用跟弱引用的区别为什么系统不建议在子线程访问UI?Looper死循环为什么不会导致应用卡死?使用Handler的postDealy后消息队列会有什么变化?可...

2020-04-09 15:42:40 460

原创 MultiImageView+PhotoView+ViewPager图片预览

效果截图PhotoViewPhotoView是一个github上的一个开源项目。将下面加入到根build.gradle文件中allprojects { repositories { maven { url "https://jitpack.io" } }}然后,加入库到你的模块build.gradledependencies { imp...

2020-04-09 11:39:31 411 1

原创 Android短信相关(理论部分)

1 PDU编码协议1.1 PDU编码规则目前,发送短信消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8bit编码...

2020-02-14 11:41:44 773

原创 Android经典蓝牙相关知识

1 蓝牙基础知识1.1 蓝牙相关的权限<!--想要用蓝牙进行通信则要申明bluetooth权限--><uses-permission android:name="android.permission.BLUETOOTH"/><!--bluetooth_admin用来操作蓝牙,官方建议除非是用户请求修改蓝牙设置的--><uses-permissio...

2020-02-12 17:42:57 8210 1

原创 【性能】垃圾收集器(GC)

目录1 概述2 判断对象是否存活2.1 引用计数法2.2 可达性分析3 垃圾收集算法3.1 标记-清除算法3.2 复制算法3.3 标记-整理算法3.4 分代收集算法1 概述在Java内存运行时的各个部分中,程序计数器,虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因...

2019-06-21 15:03:04 307

原创 Android消息机制源码解析

Android消息机制1.消息机制简述1.1 注意事项2. 准备阶段2.1 prepare2.2 loop3 发送消息3.1 Handler3.2 ThreadLocal4 获取消息4.1 MessageQueue总结参考文献:1.消息机制简述准备阶段在子线程中调用Looper.prepare()方法或者在主线程调用Looper.prepareMainLooper()方法创建当前的Lo...

2019-06-03 16:16:22 221

原创 好文推荐(持续更新)

1、Android屏幕适配全攻略(最权威的官方适配指导) 2、Android开发——IPC机制之Bundle实现IPCBundle实现源码3、详解实现Android中实现View滑动的几种方式4、Android学习总结(七)———— 本地广播5、Android高新面试题2017汇总(带答案) 6、Android RecyclerView 使用完全解析 体验艺术般的控件7、这是一篇Android Re

2017-09-22 22:40:15 422

原创 has been compiled by a more recent version of the Java Runtime (class file version 61.0), this vers

解决方案:勾选与jdk版本对应的Android SDK Command-line Tools,如下图所示。再次在cmd中输入命令。

2024-01-16 19:07:08 798

原创 Value ‘xxx’ given for org.gradle.java.home Gradle property is invalid (Java home supplied is invalid

flutter环境报错

2023-12-27 12:30:56 849

原创 flutter版本选择

使用命令dart --version查看dart版本使用命令flutter doctor查看flutter版本Flutter 有 3 个发布渠道,分别是 stable、beta 和 master。我们推荐使用 stable 渠道除非你需要体验最新更新的 Flutter 特性。要查看你当前使用的哪个渠道,使用下面的命令:先去Flutter github查看一下你想回退版本提交记找到需要回退的版本找到需要的回退版本的commit编号终端进入Flutter的git目录,执行:git r

2023-10-27 15:26:38 647

原创 java.lang.ClassCastException: TintContextWrapper cannot be cast to Activity

TintContextWrapper继承自ContextWrapper,调用wrap包装会将context传递到ContextWrapper的mBase中。所以将View的context强制转换为Activity就会报错。

2023-04-04 20:49:39 227 1

原创 【Java后台】从零开始的Java后台开发(三)

编写基础的Servlet

2022-08-05 16:43:32 463

原创 【Java后台】从零开始的Java后台开发(二)

Springmvc简单使用

2022-08-02 10:30:48 607

原创 【Java后台】从零开始的Java后台开发(一)

Java后台从零开始

2022-08-01 18:27:49 2522 2

转载 【Flutter】Flutter inspector 工具使用详解,查看Flutter布局,widget树,调试界面等

Flutter inspector工具使用详解,查看Flutter布局,widget树,调试界面,界面尺寸查看

2022-07-29 10:43:15 3725

原创 【Flutter】混合开发之Flutter预加载解决第一次加载页面缓慢问题

Native和Flutter混合开发,通过加载Flutter页面,但Flutter页面第一次加载时非常缓慢,可以通过Flutter预加载的方式来减少第一次加载的耗时。

2022-07-27 17:50:21 5099

原创 【Flutter】SharedPreferences使用

flutter的sharedpreferences的使用

2022-07-26 19:08:27 2584

原创 【Flutter组件】Expanded详解

Expanded详解以及注意事项

2022-07-21 18:19:49 3051

原创 RenderFlex children have non-zero flex but incoming height constraints are unbounded.

RenderFlex children have non-zero flex but incoming height constraints are unbounded.

2022-07-21 17:49:20 2962 1

原创 【Flutter】Json数据解析与遍历

Flutter中解析Json数据,并取出然后遍历数据。

2022-07-05 10:29:43 764

原创 【Flutter】动态可配置组件实现方式(FlutterWeb解析Html标签)

Flutter实现动态可配置方案demo

2022-07-04 16:40:09 2003

原创 【Flutter实战】底部导航栏

底部导航栏

2022-07-01 11:34:39 772

原创 【Flutter组件】层叠布局 Stack、Positioned

层叠布局Stack和Positioned

2022-06-30 18:28:00 1704

原创 【Flutter】flutter WebView加载网页时闪烁

webview加载网页闪烁问题

2022-06-30 14:23:03 1549

原创 【Flutter组件】Dialog使用说明

Flutter中的Dialog弹窗

2022-06-30 11:38:58 849

原创 【Flutter】Flutter添加依赖

flutter添加依赖的三种方式

2022-06-30 11:26:02 3129

原创 【Flutter】FlutterWeb与Js交互

Flutterweb与android原生进行交互,需要用到js作为中转(flutter知识有限,目前只知道需要js作为中转),所以需要js调用flutter,flutter调用js。js定义的方法Js调用FlutterFlutter中的代码Js调用该方法组合使用上述两个组合,可以做到Flutter调用Js的方法,然后Js回调Flutter的方法。.........

2022-06-29 15:19:42 1727

原创 【Flutter组件】路由与导航

Navigator通过push来跳转某个页面,通过pop来退出某个页面。

2022-06-28 19:20:56 293

原创 【Flutter】FlutterChannel详解

Flutter定义了三种不同类型的Channel,分别用于传递字符串和半结构化信息的BasicMessageChannel、用于传递方法调用(method invocation)的MethodChannel以及用于数据流(event streams)通信的EventChannel

2022-06-28 12:06:15 2942

MVPDemo.zip

本示例是MVP的简单示例,Presenter传递数据给Model,Model得到数据来请求网络,再返回数据给Presenter,Presenter再把得到的Model数据传递给View显示。MVP整体的一个流程就是这样。相比MVC来说,Model和View互相不干涉,达到完全解耦。博客地址:https://blog.csdn.net/u013293125/article/details/94599009

2019-07-04

PhotoView android开源框架jar包

PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放,使用方法简单,是一个很好的图片框架

2018-10-22

RecyclerView简单示例代码

该代码是RecyclerView的简单使用示例,里面包含自定义的Adapter

2018-07-23

Android缓存——将数据以对象的方式缓存到本地

将获得的数据以对象的形式缓存到本地,本例中实现了: 1.将登陆用户名和密码缓存到本地 2.将缓存的用户名和密码取出显示 本例仅供参考

2018-07-23

IPCBundle实现源码

IPC即进程间通信,一般常用的进程间通信有:使用Bundle、使用文件共享、使用Messenger、使用ContentProvider、使用AIDL,使用Socket。本例是IPCbundle实现,旨在讲述Bundle使用流程。

2017-09-23

AIDL示例(Android Interface Definition Language)

为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。我们知道4个Android应用程序组件中的3个(Activity、BroadcastReceiver和ContentProvider)都可以进行跨进程访问,另外一个Android应用程序组件Service同样可以。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。博客地址:http://blog.csdn.net/u013293125/article/details/77368261

2017-09-16

ConnectServerIml实现

继承ConnectServer接口的ConnectServerIml实现类,处理诸如连接服务器,经纬度,判断地址合法,提取字符串中的中文等

2017-09-09

Android自定义权限

Android自定义权限

2017-08-21

AIDL简单的示例代码

AIDL简单的示例代码,主要是关于AIDL如何使用。https://blog.csdn.net/u013293125/article/details/77368261

2017-08-18

AIDL简单使用示例代码

AIDL简单使用示例代码,关于如何使用AIDL https://blog.csdn.net/u013293125/article/details/77368261

2017-08-18

Android——Canvas切割出扇形表盘式进度

博客地址:http://www.cnblogs.com/ityizhainan/p/6306748.html

2017-01-19

Android——华为手机(G9)调用Camera需要手动申请权限

blog:http://www.cnblogs.com/ityizhainan/p/6283328.html

2017-01-13

Android中notification通知的Demo——震动,铃声,Led灯闪烁

notification在新版本的SDK上的写法 blog:http://www.cnblogs.com/ityizhainan/p/6282031.html

2017-01-13

Android——Listview不用notifydatasetchanged更新数据的方法

blog: http://blog.csdn.net/u013293125/article/details/52858396 http://www.cnblogs.com/ityizhainan/p/5976845.html

2017-01-11

Android--简单的自定义ListView下拉刷新

blog地址:http://www.cnblogs.com/ityizhainan/p/6273919.html

2017-01-11

Listview不用notifydatasetchanged更新数据的方法

Listview不用notifydatasetchanged更新数据的方法

2016-12-26

Android侧滑菜单简单示例

详解地址:http://blog.csdn.net/u013293125/article/details/52176526

2016-08-10

ExpandableListAdapter

使用SimpleExpandableListAdapter将两个List集合包装成ExpandableListAdapter。 blog:http://blog.csdn.net/u013293125/article/details/50858610

2016-03-11

ExpandableListView简单示例

扩展BaseExpandableListAdapter实现ExpandableAdapter blog:http://blog.csdn.net/u013293125/article/details/50858610

2016-03-11

Android从网上获取图片的简单示例

blog:http://blog.csdn.net/u013293125/article/details/50821983

2016-03-07

自定义DrawView

简单的自定义控件DrawView,blog地址:http://blog.csdn.net/u013293125/article/details/50788800

2016-03-03

Animation——制作动画引导页

Animation——制作动画引导页,blog地址:http://blog.csdn.net/u013293125/article/details/50531874

2016-01-17

动态加载布局——只改变一个页面的部分布局的方法

动态加载布局——只改变一个页面的部分布局的方法:讲解地址:http://blog.csdn.net/u013293125/article/details/50518892

2016-01-14

仿QQ主界面Fragment简单应用

仿QQ主界面Fragment简单应用,一个fragment的实例

2016-01-12

百度地图系列03——简单地图定位

百度地图系列03——简单地图定位 http://blog.csdn.net/u013293125/article/details/50073599

2015-11-27

百度地图系列01——最简单的调用百度地图

百度地图系列01——最简单的调用百度地图

2015-11-20

空空如也

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

TA关注的人

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