- 博客(121)
- 资源 (1)
- 收藏
- 关注

原创 Android进程间通信 - 几种方式的对比总结
什么是RPCRPC(Remote Procedure Call)即远程过程调用,它是一种通过网络从远程计算机程序上请求服务,在不需要了解底层网络技术的协议下,即可获取计算机进程中的数据。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC在OSI网络通信7层模型中,位于传输层与应用层之间,即位于会话层: RPC实现模式,就是我们常说的C/S结构,引用百度百科的定义:...
2018-07-29 21:12:45
25846
1

原创 Android进程间通信 - Socket使用(TCP、UDP)
在使用Socket实现进程间通信前,先对网络协议相关知识进行简单回顾。网络分层一般情况会将网络分为5层:应用层     常见协议:HTTP、FTP、POP3等传输层     常见协议:TCP、UDP网络层 &
2018-07-28 19:38:30
6592
3

原创 Android进程间通信 - ContentProvider内容提供者
简介ContentProvider主要用于在不同的应用程序间实现数据共享的功能,允许一个程序访问另外一个程序中的数据,还能保证数据访问的安全性。 是Android跨进程实现数据共享的标准方式。ContentProvider相当于进程间的搬运工,对数据一系列的操作(CRUD)数据源可以是数据库(SQLite等)、文件、xml、网络等等。统一资源标识符(URI)UR...
2018-07-22 20:37:48
3784

原创 Android进程间通信 - Messenger的使用和理解
Messenger简介Messenger是基于Message对象进行跨进程通信的,类似于Handler发送消息实现线程间通信一样的用法。Messenger使用下面写个客户端跨进程发送消息到服务端,服务端接受到立即回复的例子。服务端实现流程首先创建一个Handler对象接着创建一个Messenger对象,并把Handler对象以形参传入Messenger中最后通...
2018-07-18 02:16:47
7462
2

原创 Android进程通信 - AIDL解析与Binder浅析
在上篇我们知道了AIDL的基本使用Android进程通信 - AIDL的使用方法,然而还存在使用上的疑问,比如:AIDL是怎么实现IPC的?服务端创建Binder对象或者客户端AIDL接口对象,都调用Stub()方法实现,那么该方法具体有哪些操作? 什么是Binder?其实上面这三点可以统称理解为AIDL本质是什么;下面重点对AIDL文件生成的java文件进行解析,在创建了AIDL...
2018-07-16 22:31:11
935

原创 Android进程通信 - AIDL的使用方法
AIDL简介AIDL是Android接口定义语言,有点类似于我们开发中的普通接口。由于不同进程间不能共享内存,为了解决进程间通信的问题,可以通过AIDL接口语言来实现进程间的通信。AIDL文件支持的数据类型基本数据类型(int、long、char、boolean、double)String和CharSequenceList和Map集合 集合内元素必须是AIDL支持的数据类型服...
2018-07-15 02:17:20
3518
2

原创 Android进程通信 - 序列化Serialzable与Parcelable
序列化简介定义序列化是将对象的状态信息转换为存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从储存区中读取或反序列化对象的状态,重新创建该对象。 简单而言: 序列化是将对象转换成字节流 反序列化是将字节流转化成对象。用途主要用途:序列化将对象写成字节流持久化保存在内存、文件、数据库中将序列化对象通过网络...
2018-07-11 01:24:59
2637
原创 鸿蒙应用开发—鸿蒙app一键安装脚本
鸿蒙App的安装过程相对复杂,需要手动执行一系列命令行操作,为了简化这个过程,可以通过一个脚本从而实现一键安装。如果再结合构建脚本,可以实现打包、发布、安装一条龙,减少中间手动环节。当然官方也提供了邀请链接和DeepLink链接方式,但这两种方式是需要审核或者专业的>组织内部发布证书,对及时响应并不友好。可以像安卓一样在电脑上执行命令行来安装鸿蒙应用,支持在windows和mac上运行。如果想更方便的使用,可以将脚本转换为可执行文件,Windows和Mac都支持。
2025-04-15 22:47:10
731
转载 鸿蒙应用开发—ZDbUtil高效使用数据库
ZDbUtil是一款基于SQLite的鸿蒙数据库框架,通过注解标注实体类与属性,让数据更能抽象化简化原生RdbStore的使用。同时支持V1和V2状态管理管理。鸿蒙应用开发—数据持久化之SQLite只要添加了@Table注解,@Id注解,@Column注解在初始化数据库时,会自动创建表,并添加列。// 分类@Table()// idid?: number// 名称name?: string// 创建时间createTime?: number// 更新时间editTime?
2025-03-13 22:12:36
1018
原创 鸿蒙应用开发—数据持久化之SQLite
SQLite是一个轻量级关系数据库,占用资源很少,只有几百KB的大小,无需服务器支撑,是一个零配置、事务性的SQL数据库引擎。相对于首选项Preferences,SQLite更适合存储大量复杂的关系型数据,首选项则适合于保存一些简单的键值对数据;比如IM应用的聊天会话信息的本地存储,用首选项存储是明显是不合适,因为其数据量是极大的,数据关系结构也很复杂,在这方面首选项是明显是不合适的,SQLite则可以很轻松存储操作这些数据。那么SQLite在鸿蒙中是如何使用的,下面会一一讲解。
2025-03-10 20:52:46
1378
原创 在Android Studio中通过CMake实现交叉编译生成动态so文件
项目的C/C++部分进行迁移,通过CMake和JNI集成到Android项目中,之前有在Linux环境通过NDK进行交叉编译生成so文件,试想有没更简单的方式也能交叉编译生成动态库文件,发现在AS IDE也是可以完成这个工作的。三者的区别和作用,首先都是搜集文件,但搜集的文件类型有所不同,在此我们先了解下什么是源文件、头文件、库文件。收集所有的源文件并保存变量中,比如上例中的变量SRC_LIST、NATIVE_LIB,变量的值分别是。第一个步骤,这里就不详细展开讲了,是JNI的基础内容,具体可以参考。
2025-01-05 18:16:39
928
原创 鸿蒙ZRouter动态路由框架—NavDestnation页面模板化
新建一个类继承于ZAttributeModifier,并且用注解声明属于哪个页面的。到此就完成了NavDestination页面模板化的能力,其中生命周期函数监听和自定义NavDestination属性是可选的,当前NavDestination页面模板化暂时不支持设置转场动画,后续会接入集成进去。
2024-12-09 22:12:38
531
原创 鸿蒙ZRouter动态路由框架—生命周期函数管理
组件的通用生命周期函数(aboutToAppear、aboutToDisAppear)未必一定会被调用,前提取决于NavDestination页面是否了初始化了LifecycleRegistry对象,这个问题会在后续版本中优化。在使用lifecycle.addObserver方式,由于是字面量对象的方法中,this 指向调用该方法的对象,这点要特别注意,直接在方法内使用this会报错,对此我们可以将this设为一个局部变量来引用。
2024-11-12 21:49:11
721
原创 HarmonyOS鸿蒙应用开发-Logger简单又实用的日志框架
Logger是一款简单、漂亮、实用的鸿蒙应用日志框架,是基于鸿蒙系统提供的hiLog日志库封装的,主要特性:• 支持堆栈信息输出;• 支持众多数据格式输出,如基本数据类型、对象、Map、List、JSON等格式,可以一次性打印多个类型的数据格式;• 支持在日志定位跳转到源码;• 支持自定义日志行为,比如日志上报、缓存本地等。目前Logger内置只支持在控制台打印,如果你需要将日志上传到服务器或者保存本地,可以实现ILogAdapter接口来实现对应的逻辑。
2024-08-16 17:19:38
1303
原创 HarmonyOS鸿蒙应用开发-ZRouter让系统路由表变得更简单
ZRouter是基于Navigation系统路由表和Hvigor插件实现的动态路由方案。系统路由表是API 12起开始支持的,可以帮助我们实现动态路由的功能,其目的是为了解决多个业务模块(HAR/HSP)之间解耦问题,从而实现业务的复用和功能的扩展。首先在目标模块中的module.json5文件中配置路由表文件route_map.json的指引;然后在resources/base/profile目录下创建route_map.json文件,用于配置每个页面路由的信息;
2024-07-22 13:47:48
1551
原创 uniapp wgt多环境打包与调试插件——uni-packing-wgt
由于官方的HBuilderX编译器打包wgt每次都要手动的操作有些繁琐,也不支持多环境打包,在开发阶段与原生项目交互调试是极其不方便。而正好可以解决这些问题。是uniapp跨平台多环境资源打包、调试、发布的脚本工具。支持同时构建多个环境资源(dev、beta、release)包,也包括了wgt包。支持上传发布到七牛云平台,其他云平台暂不支持,支持七牛文件CDN缓存刷新。在构建资源包时也可以同步内置到原生项目上,方便在开发阶段与原生间的交互调试。
2024-06-22 23:46:25
2035
2
原创 HarmonyOS鸿蒙应用开发——ArkUI组件封装最佳实践
静态注册属性封装UI组件的特点:使用简单,由于要手动定义属性,导致在可维护性和可扩展性上有很大的局限性,对于简单的UI组件,静态注册可能是可行的封装方式,易用易理解,但是比较复杂的组合式ui组件,尤其是那些对动态设置要求较高的场景时,静态注册就显得不那么适用了,需要定义众多的成员属性,无法根据实际需求灵活地按需注册属性。动态注册属性封装UI组件的特点:是通过组件的AttributeModifier来实现的,相较于静态注册方式,尽管操作更为复杂,但可以弥补静态注册的缺陷。
2024-06-04 15:41:40
2422
原创 HarmonyOS鸿蒙应用开发——原生与H5通信框架DSBrigde-HarmonyOS
HarmonyOS版的DSBridge,通过本库可以在鸿蒙原生与JavaScript完成交互,相互调用彼此的功能。目前兼容Android、iOS第三方DSBridge库的核心功能,基本保持原来的使用方式,可以放心接入到项目中,后续会持续迭代保持与Android库相同的功能,减少前端和客户端的适配工作。支持以类的方式集中统一管理API;支持同步和异步调用;支持进度回调/回传:一次调用,多次返回;支持API是否存在的测试 (当前仅支持检测原生API,在调用call()方法时会自检测)
2024-01-09 14:22:40
6989
10
原创 HarmonyOS鸿蒙应用开发——数据持久化之Preferences
数据持久化就是将内存数据通过文件或者数据库的方式保存到设备中。返回值类型是不确定性,定义一个联合类型的别名。,方便后期可以通过单例直接获取实例;实例后会将其保存单例中,这个单例是。实例就可以对数据增删改查操作。注意:以上方法都是异步的。方法中创建实例,其中。
2023-12-13 00:08:43
5584
21
原创 HarmonyOS鸿蒙应用开发——HTTP网络访问与封装
其实在http模块中已经有对应的枚举,之所以再用一个新枚举来声明,是简化使用,同时也是将http模块相关细节屏蔽掉不对外开放,这样可以灵活替换网络库。来封装一个网络请求库,统一管理请求参数、响应数据、日志的输出等,对外屏蔽了细节,使用者只需定义业务数据的实体类以及调用即可。第二、创建httpRequest对象,上面就是网络请求的简单使用,接下来通过。把各种请求方式用枚举声明。**开放接口为测试用例。第三、发起请求,比如。
2023-12-10 17:41:02
5878
3
原创 TypeScript笔记
TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。可以在任何浏览器、计算机、操作系统上运行,并且是开源的。最终会编译成JavaScript语法在浏览器中运行。类型系统,从可从两个角度来考虑类型安全:可分强类型与弱类型语言,强类型:在语言层面上,就约束着函数的实参类型必须与形参类型相同,另外不允许隐式类型转换。弱类型:在语言层面上,不要求函数的实参类型与形参类型是相同的,允许隐式类型转换。类型检查:可分静态类型与动态类型语言静态类型。
2023-07-11 22:44:45
1334
2
原创 webpack笔记二
Babel 是一个工具链,主要用于将采用 ES6+ 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。为了确保打包目录下所有文件都是最新的,因此在打包时需要清除webapck的。实际开发项目中,其实还可以再配置一个环境,如预生产beta环境。添加配置,需要配置生产模式 和webpack的最终配置文件。设置了webpack的构建文件,之前项目根目录的。打开http://localhost:8081/文件拆分了,在打包时自然需要合并了,通过。
2023-07-11 22:38:09
879
原创 webpack笔记一
webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。所谓打包工具就是把开发环境的代码转化成运行环境代码。一般来说,开发环境的代码是为了更好的阅读和开发,而运行环境的代码则是为了能够更快地执行。因此开发环境和运行环境的代码形式也不相同。比如开发环境的代码,要通过混淆压缩后才能放在线上运行,这样代码体积更小,而且对代码执行也不会有任何影响;
2023-07-11 22:31:54
828
原创 CSS-Grid网格布局详解
显示网格:是指item在定义单元格范围内,比如一行三列的布局,若item在这布局中就是显示单元格,不在则为隐式单元格。前提是容器的子元素超过了网络布局定义范围,比如一行三列的布局,正常是三个元素,但隐式单元格就是超过了三个元素。单元格列数跟随容器宽度自适应,宽度最小不会小于100px,行数是一个隐式单元格属性,会自动适应容器大小。上面没有给网格布局设置宽度与高度,以及网格的列数、行数,都是跟随元素和分辨率自动调节网格的列数、行数。默认子元素都是独占一个单元格的,如果要进行合并单元格,除了前面提到的用。
2023-07-11 22:18:10
3119
原创 解决node环境下SyntaxError: Cannot use import statement outside a module的问题
CommonJS作为Node.js 的规范,一直沿用至今,现在很多类库还在用CommonJS ,而ES6的import/export出现相对晚很多,在Node13以上环境为了兼容ES6的特性,就需要创建package.json文件指明type类型为module。
2022-11-02 21:26:36
4268
原创 安装使用nginx解决跨域问题
同源策略的出发点是好的,保护数据的安全性,但也影响着开发的便利性,给开发者造成困难,比如不能正常访问非同源的第三方网络接口。对于网络请求,我们可以用nginx来代理转发接口,避开浏览器同源策略的限制。
2022-10-30 18:02:48
3759
原创 adb命令删除offline离线手机设备
最近在使用React Native,选择了夜神模拟器,连接模拟器需要进入安装目录连接,通过。在调试Android应用过程中,经常会使用adb命令,比如检测设备连接状态时,会使用。,如果在使用过程会出现频繁断开的话,可以参考这篇文章解决。尝试过如下方法来删除离线设备,都未解决。另外记录adb常用命令, 后续慢慢补充。最后把数据线拔掉就可以了。,夜神adb默认端口是。
2022-09-25 23:21:47
8228
原创 No connected devices found; please connect a device, or see flutter.dev/setup for getting started in
No connected devices found; please connect a device, or see flutter.dev/setup for getting started instructions这个问题困扰我两天的时间,之前的老项目也是一样的网上的方案几乎全部都试了一遍,在我这里都是没有效果的,就差重装AS了。当然也可以按照下面的方案试试,毕竟有小伙伴是可以解决他的问题。flutter的环境配置都是正常的,没有问题的, 检测出设备是有识别的,就是不知道问题出哪里。最后在技术群
2022-06-26 19:06:24
4258
原创 修复损坏的SQLite数据库文件(database disk image is malformed)
最近实施那边反馈,有个别客户明明是把数据保存到数据库,但在界面就是没有呈现出来查询不到数据,为了跟踪排查问题与实施沟通后,决定让客户将数据库导出发回来。在SQLite Stuido工具可以正常查看该表的所有数据,但用sql语句去查询某条数据时却无法正常访问,抛出如下异常:https://blog.youkuaiyun.com/wjb123sw99/article/details/89463307https://blog.youkuaiyun.com/fangye945a/article/details/94762526.
2021-10-25 09:55:00
11241
转载 Android Studio Build Output 栏内汉字出现乱码的解决方案
先上个图 就是图中红框内显示的毛病,Build Output栏中的汉字出现了乱码,其它地方都没有乱码。 此方案仅适用于图片中出现的乱码。 百度上的消除乱码的方案都试了一遍,一律没用,最后在必问上问的大神才解决,在这里感谢 “技术宅星云” 大神搭救。 解决方案如下: 1、打开Android Studio 2、打开Configure —> Edit Custom VM Options 3、...
2021-10-18 10:44:01
683
1
转载 深入理解js立即执行函数
看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数。立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们想到的解决办法就是使用立即执行函数。 1.什么是立即执行函数(IIFE) 在了解立即执行函数之前先明确一下函数声明、函数表达式及匿名函数的形式,如下图: 接下来看立即执行函数的两种常见形式:( functio...
2021-10-09 13:44:31
319
转载 五分钟读懂UML类图
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道。实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧:一、类的属性的表示方式在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和email这3个属性,以及modifyInfo()方法。那么属性/方法名称前加的加号和减号是什么意思呢?它们表示了这个属性或方法的可见性,UML类图中表示可见性的符号有三种.
2021-09-11 23:45:01
221
转载 设计模式中类的关系
在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。 1. 依赖(Dependence) 依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另...
2021-09-09 16:46:12
192
原创 WebView独立进程方案-基于腾讯X5的二次封装
文章目录前言概述基本使用架构流程命令模式预初始化参考前言概述几乎所有的App都会用到WebView组件,用WebView承载业务功能也是一种选择,毕竟不用等待应用市场的审核,提升业务上线与bug修复的及时性,但WebView加载业务功能,也有很大的缺陷,体验不好(主要体现在加载、交互上)、耗内存;针对耗内存的问题这里提供跨进程的设计方案,让WebView在单独的一个进程中运行,这样做的好处是分担主进程的内存压力,另外WebView进程发生崩溃了,也不会影响到主进程的正常运行。WebView跨进程通信是
2021-08-08 19:53:34
2469
转载 javac “错误:编码GBK 的不可映射字符”
推荐推荐使用第一种方法,在javac命令中设置编码格式utf-8第二种方法将文件转成ANSI编码,中文注释会乱码转载与参考自:解决 java “错误:编码GBK 的不可映射字android studio 中的编码问题问题与解决过程 public class HelloWorldwww{ public static void main(String args[]){
2021-04-05 09:09:30
958
原创 Git - Failed to connect to github.com port 443: Timed out
问题描述系统环境:window10和以往一样的pull拉取代码,在今天忽然拉取失败,提示:Failed to connect to github.com port 443: Timed out字面提示与github.com链接超时,通过ping检测github.com是正常链接,github网站也是正常能访问的。查阅网上很多资料说是与代理有关联,接着尝试如下步骤,修改测试完美解决这个问题。问题解决一、进入设置 -> 网络和Internet在代理中把使用设置脚本开关打开,接着把脚
2021-04-02 23:39:34
10946
10
原创 快速入门uni-app写个简单应用
文章目录前言效果项目结构路由配置与跳转配置跳转参数获取网络请求前言uni-app相信很多人都不会陌生,特别是做前端更是,uni-app是基于vue.js开发的前端框架,一套代码多端运行;github star很平稳的增长,更多的是国内开发者关注,另外我们也看出关于跨平台的技术,flutter是遥遥领先,github star指数一定程度上可以辅助我们做技术选型。从百度指数来看,热度反而超过了flutter,可以看出uni-app框架在国内很受欢迎。觉得可以去尝试下,如果有vue的基础,对uni-ap
2021-03-20 16:13:47
959
3
原创 CSS - 居中布局常用方法
文章是从有道云笔记转到csdn博客,如果存在图片丢失问题,可阅读原文文章目录Flex弹性盒子方法单行居中多行居中多列居中position + transform方法margintext-align总结参考居中布局在CSS中是一个很蛋疼的老问题,相信每位在刚刚入门的时候很烦恼,网上也有很多关于居中布局的文章,由于每个人场景不同可能很难选择一个自己适合的方法。今天总结下,会以打分的方式来排名,总分是5分Flex弹性盒子方法分数:5分为什么把Flex放在第一呢,无论是水平居中还是垂直居中、单行、多.
2021-03-20 15:55:01
960
原创 CSS - Flex弹性布局笔记
文章是从有道云笔记转到csdn博客,如果存在图片丢失问题,可阅读原文文章目录基本概念作用在父元素上的属性flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content作用在子元素上的属性orderflex-growflex-shrinkflex-basisflexalign-self参考刚刚接触CSS布局的时候,很多时候会依赖display + position + float属性来布局,在使用过程中很不方便。比如一些.
2021-03-20 15:43:28
378
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人