- 博客(33)
- 收藏
- 关注
原创 在不同场景下使用Coroutine协程并遵循结构化并发
结构化并发(Structured Concurrency)是Kotlin协程中的一个强大特性,它允许协程以一种更安全和结构化的方式运行。它可以确保协程生命周期与作用域 (scope) 紧密关联,这种模式可以帮助避免内存泄漏,并确保在父作用域取消时,所有子协程也会被正确地取消。
2024-07-20 14:46:04
307
原创 kotlin中常见的创建协程的方式
会阻塞当前线程直到协程完成。它通常用于测试或简单的同步操作,但应避免在主线程(如UI线程)使用。用于改变当前协程的执行上下文,比如切换到不同的调度器。它不直接启动协程,但可以与。这是最常见的启动协程的方式,通常用于不需要返回结果的协程。这种方式允许你更细粒度地控制协程的启动和取消。用于启动一组协程,当其中一个协程失败时,其他协程不受影响。用于创建一个消息传递协程,它接收消息并处理它们。,它可以发送多个值,并且接收者可以接收这些值。对象,可以用来管理协程的生命周期。当需要从协程中返回结果时,可以使用。
2024-07-20 10:51:28
399
原创 安卓屏幕信息基础知识复习
在Android中,像素(px)、分辨率、密度(dpi)和尺寸之間存在著密切的關係。**像素(px)**是屏幕上顯示圖像的最小單位。每個像素都可以顯示一種顏色,多個像素組合在一起可以顯示複雜的圖像。是指屏幕上像素的數量。它通常表示為寬度和高度的乘積,例如1920x1080。分辨率越高,屏幕上可以顯示的細節就越多。**密度(dpi)**是指屏幕上每英寸的像素數量。它用於衡量屏幕的清晰度。密度越高,同樣大小的圖像就會顯得更清晰。是指屏幕的物理大小。它通常以英寸為單位表示。
2023-06-01 21:34:01
766
原创 Gradle版本、Gradle插件版本和AndroidStudio版本之间的对应关系
有时候碰到gradle版本死活下载不下来,还会报Gralde Sync Issues,有可能是你的Gradle Wrapper版本和Gradle插件版本、AndroidStudio版本不匹配。Gradle版本和Gradle插件版本之间存在一定的对应关系。Gradle Wrapper是用来指定项目使用的Gradle版本,Gradle插件则是用来构建Android应用程序的。下表列出了各个 Android Studio 版本所需的 Android Gradle 插件版本。要指定Gradle插件版本,请在。
2023-05-14 18:55:03
10892
2
原创 Git commit校验工具commitlint的配置与使用
因为commitizen只支持英文,如果我想要支持中文指令和emoji,那么就必须安装可自定义的cz适配器了。
2022-11-18 15:45:39
7004
2
原创 Vue代码规范
认识代码规范一、命名规范二、编码规范2.0 Vue项目目录规范2.1 Vue基础知识2.2 html规范2.3 css规范2.4 javascript规范三、注释规范四、其他先来思考两个问题:如果你是一个经验丰富的前端开发,你一定接触过这样的老项目:变量名是 abc,fds 这种随意起的,或者是 name1, name2 这种带数字起名,这样的变量不加注释,鬼都不知道它是干什么的。这类代码就是一种典型的不规范代码。这样的代码除了让我们开发人员情绪暴躁,最重要的问题是,它极大的降低了团队协作的效率和程序质量。
2022-10-20 14:48:38
768
原创 使用vue-pdf 实现pdf在线预览并且自定义预览框高度
我们尝试给这个组件再写一个pdf-preview的class 将设置高度为100%发现不生效。然后运行程序,这时候你会发现,pdf预览图并不能铺满你的容器框。组件的canvas标签里面把高度写死成。
2022-09-27 11:30:24
2695
3
原创 Warning: Your Flutter application is created using an older version of the Android embedding.
【代码】Warning: Your Flutter application is created using an older version of the Android embedding.
2022-08-27 13:35:49
2601
原创 Git代码合并+解决冲突
将功能分支 合并到master分支2. 将feature-login分支合并到master3. 解决冲突git在merge的时候处理冲突的方法就是它把两边的冲突都保留了下来。用和以及这样的符号进行分隔,我们简单介绍一下其中的含义。后面跟着的内容是HEAD指针指向的节点的代码,也就是我们当前所处的分支master分支当中冲突的代码,这些代码的内容一直到结束。从开始一直到最后是我们合并进来的分支的代码。手动合并的方法很简单,就是我们选择我们要保留的代码,然后再把>>>>>, ======,
2022-06-23 19:04:56
7853
原创 Git中的Stage和Unstage
Stage: 暂存区,将代码暂存到本地仓库但不上传。已经被Git跟踪的状态为stage状态,包括staging状态和staged状态。添加当前目录下的所有文件到暂存区.Unstage: 未被Git跟踪的状态称为Unstage状态git reset 会将所有stage(暂存)的文件状态,都改变成非stage状。可以使用来unstage掉一些不小心加入暂存区但又与此次commit无关的文件,让你的commits保持高度的专一。...
2022-06-23 15:51:02
4777
原创 dagger2错误:找不到符号类DaggerAppComponent
报错信息:找不到符号类DaggerAppComponentApplication类:public class App extends MultiDexApplication implements HasActivityInjector { @Inject DispatchingAndroidInjector<Activity> dispatchingAndroidInjector; @Override public void onCreate() { super.onCrea
2022-02-23 17:41:35
2478
原创 app国际化多语言strings.xml 与 Excel 互相转换的工具,支持iOS和Android
国际化多语言转换工具方案介绍当项目涉及到多语言国际化的时候,我们需要把string.xml翻译成其他国家语言,一般翻译公司会需要excel等格式文档,可是这翻译文件实在是不好整,幸好有大神做了个py工具实现 string文件转excel.目前有两种方式:Localizable.strings2Excel (下载源码,然后在终端输入命令跑脚本进行文件转换)作者:CatchZeng,https://github.com/CatchZeng/Localizable.strings2ExcelL
2022-02-17 11:42:02
4708
3
原创 WEEX框架(二)开发环境搭建、创建App、编译运行
搭建开发环境安装依赖Weex 官方提供了weex-cli 的脚手架工具来辅助开发和调试。首先,你需要 Node.js 和 Weex CLI。安装 Node.js 方式多种多样,最简单的方式是在 Node.js 官网 下载可执行程序直接安装即可。更多安装方式可参考 Node.js 官方信息TIP通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit , 你也可以通过 yarn 来进行安装。国内的开发者推荐将npm镜像切换至
2022-02-12 15:03:32
1868
原创 WEEX框架(一)框架简介和快速上手体验
框架简介Weex,是能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验的框架,并支持iOS、安卓、Web等多端部署,由阿里巴巴研发和维护。对于移动开发者来说,Weex主要解决了频繁发版和多端研发两大痛点,同时解决了前端语言性能差和显示效果受限的问题。开发者只需要在自己的APP中嵌入Weex的SDK,就可以通过撰写HTML/CSS/JavaScript来开发Native级别的Weex界面。Weex界面的生成码其实就是一段很小的JS,可以像发布网页一样轻松部署在服务端,
2022-02-12 11:17:54
8955
原创 WebView onPageFinished 被重复调用的问题
最近在开发一个新APP,因为要上架谷歌商店,所以webview组件用的安卓官方原生的。结果发现onPageFinished会重复调用,总共会加载3次,而且我的url并没有重定向的问题。查资料:WebViewClient.onPageFinished()。你永远无法确定当WebView调用这个方法的时候,网页内容是否真的加载完毕了。当前正在加载的网页产生跳转的时候这个方法可能会被多次调用,StackOverflow上有比较具体的解释(How to listen for a Webview finish
2022-01-03 11:54:22
4111
原创 Flutter for Web 解决跨域问题支持浏览器本地运行以及打包部署到Web服务端
在已有的Flutter项目上运行Web支持Flutter for Web 静态页面run起来基本没啥问题,但是加上接口调数据的时候,却遇到了浏览器跨域问题。跨域问题1:CROS解决方案:有三种解决方案:A、安装浏览器拓展插件moesif-orign-cors-changer(简单配置几个数据)B、配置Nginx(配置太多了)、C、使用shelf_proxy插件我选的C方案1.在项目的 pubspec.yaml 中添加这样的一行:dependencies: shelf_proxy:
2021-12-10 11:46:19
10373
1
原创 flutter pub deps 命令 查看使用的第三方插件的依赖关系
输入 flutter pub deps 命令 查看使用的第三方插件的依赖关系了,非常方便和好用。
2021-12-01 11:28:40
2448
1
原创 Flutter Error: The method ‘toInt‘ isn‘t defined for the class ‘Decimal‘
1.运行项目报错:2.错误原因分析:从错误日志可以看出,是common_utils插件中的decimal-2.0.0依赖库报错了。猜测可能是decimal升级版本了导致不兼容造成的。打开https://pub.flutter-io.cn/ 搜索decimal,查看changelog和versions:发现果然是这个库api升级了。而我们项目是没有主动集成这个库的,通过flutter pub deps 命令查看当前项目使用的第三方插件的依赖关系得知,这个decimal库是flustars
2021-11-30 11:52:43
4222
原创 Google Play上架:上传应用强制要求Android App Bundle (AAB) 格式
公司最近打算推出海外业务的APP上架谷歌商店,由我来预研下相关上架准备工作事项。根据Google Play的要求,2021年8月开始新发布应用必须使用Android App Bundle(AAB)格式,即.aab格式文件,新上架App不再支持apk格式。aab概述:Android App Bundle是Google在2018年推出的Apk动态组件化打包技术,通过AAB格式的AppBundle文件为你的设备动态组装apk来安装。其本质就是把Apk拆分成了多个模块,之前是把一个大而全的apk装到你手机里
2021-11-12 17:14:11
7237
原创 WebView加载富文本时页面右边显示空白的问题
问题描述我们都知道,WebView加载数据的方式有两种:webView.loadUrl(data);//加载urlwebView.loadDataWithBaseURL(null,data, "text/html" , "utf-8", null);//加载html数据加载富文本数据所以选择第二种方式:loadDataWithBaseURL。开发过程中发现2个问题:1,在很多安卓手机上你会发现文本内容宽度只显示屏幕宽度的一半或60%左右,页面右边是空白的,这样就很难看了,我们期望结果是富文本内
2021-10-12 11:59:14
711
原创 注册非商业许可证,解决每次打开SmartGit时一直弹出“非盈利....”框的问题
问题描述每次打开SmartGit一直弹窗提示确认是非营利目的,还不能马上关闭,要等个十几秒才能关闭,而且一天还会提示很多次,感觉是挺烦的。可以通过注册许可证解决这个问题。注册网址https://www.syntevo.com/smartgit/register-non-commercial/注册非商业许可证1、勾选在家At home项,其他选项不勾选(勾选其他项会要求付费)2、填写相关信息,申请许可证3、在你的邮箱会收到许可证的邮件,下载它吧将许可证添加到SmartGit1、打开Sm
2021-10-12 11:10:24
2791
原创 Kotlin 的?和!!
?表示对象可以为空,但是不会报空指针。!! 表示如果对象为null, 会报空指针,和java一样。所以?.的用法就是相当于Java里的if()判断null在新建一个参数的类名后面加一个? 表示这个参数可以为空.还有就是在用到这个参数的时候后面加? 表示空参数就跳过并且程序继续执行而!!只用于用到这个参数的时候在后面加!!,表示空参数就抛出异常...
2021-10-12 10:38:35
196
原创 “ flutter pub get”无法获取依赖插件
Running "flutter pub get" in flutter_tools... 775ms lib/page/home/store/storedetail/selectCouponView/selectCouponDialog.dart:5:8: Error: Error when reading '../../../../Develop/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutte
2021-08-28 17:31:16
2102
原创 格式化保留两位小数导致价格计算错误的问题
项目场景:网上商城下单的价格保留两位小数造成的血案问题描述:客户下单失败,差1分钱。原因分析:订单金额格式化为两位小数,结算页显示订单总额2525.19元,然后客户提交订单失败,无法支付,无法通过后台校验。原因是订单应付总额应该是2525.20元,格式化的时候造成错误精度少了1分钱。 /** * @param @param data * @param @return 设定文件 * @return String 返回类型 * @throws *
2021-07-26 18:01:09
461
原创 Flutter报错: type ‘double‘ is not a subtype of type ‘int?‘或type ‘int‘ is not a subtype of type ‘double
项目场景:Flutter中接口response json数据解析为Model问题描述:发现某些字段,例如price价格,无论将字段数据类型定为double还是int,都有可能报错,解析失败。 int? firstCount; int? orderAmount; int? amountPaid; int? orderCount; int? receiverCount; double? price;原因分析:price字段后台可能返回 int或double,所以数据类型无
2021-07-26 16:24:11
4584
1
原创 Android4.4以后第三方应用无法删除短信的解决方案
一、概述最近测试提交了一个bug:用我们的应用删除Android5.0手机上的短信失败。二、原因分析在google查阅后得知:Android为了防止第三方软件拦截短信和偷发短信吸费,在android4.4之后,只有默认的短信应用才有权限操作短信数据库。Android4.4短信机制的改变: Getting Your SMS Apps Ready for KitKat4.4 之前:新接收短信广播
2017-05-31 23:09:58
2824
1
原创 NDK not configured错误的解决方案
1、报错信息2、原因分析从报错日志可以看到,原因是NDK没有配置好。3、解决方案1, 在你的local.properties文件中添加你的ndk路径 2,在你的build.properties配置文件里的android{}里面添加如下代码块(和defaultConfig{}同级) main { jniLibs.srcDirs = ['libs']
2016-07-17 12:41:26
4270
原创 Android Studio的no debuggable applications问题
今日在调试程序的时候,突然发现控制台不能看某个程序的日志了, 报no debuggable applications。 解决方法很简单: Tools->Android->Enable ADB Integration active.
2016-07-17 12:25:58
996
原创 通过adb pull和adb push 手机与电脑之间传输文件
一 将手机卡中的某个文件复制到电脑1,手机连接电脑后,在命令行输入 adb devices,获取到设备序列号后说明手机已经和电脑连接成功。2,输入 adb pull 手机存储路径 电脑路径adb pull /sdcard/xxx /Users/xxxx/xxx.tx二 从电脑端向手机复制文件输入命令 adb push /Users/xxx
2016-07-17 10:43:11
90503
1
原创 关于setConnectTimeout和setReadTimeout的问题
1、问题描述这几天测试重构后的下载框架,发现在下载过程中如果网络中断或网络较差,个别应用的下载就会阻塞卡住,一直卡在 “正在下载 xx%”。2、问题排查和定位思考:网络差不应该报网络异常的错误或者直接抛timeout异常吗?所以马上去检查Http请求的地方:发现在DownloadThread中使用HttpURLConnection进行网络请求时只是设置了connectTimeo
2016-07-16 11:35:27
26876
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人