移动开发

RE: 从零开始的车载Android HMI(三) - SurfaceView

1.前言 从零开始的车载Android HMI是一个系列性的文章,目的在于展示一些在Android手机应用开中不常用,但是在车载应用开发中较为常用的一系列Android HMI 组件,希望能够帮助初入车载应用开发的同学了解车载应用开发过程中常用的各种UI 组件。 RE: 从零开始的车载Android HMI(一) - Lottie RE: 从零开始的车载Android HMI(二) - Widge

如何在Windows/Linux系统上安装adb

官方文档-adb的工作原理:Android 调试桥 (adb)  |  Android Studio  |  Android Developers一、Windows安装步骤1. 下载地址: ?hl=zh-cn2. 下载后得到压缩包(

android studio模块化之模块划分简易版

模块也好,组件也罢,都是需要做好模块区分的。 一、新建module 修改你的模块名,比如你原来的包名是aaa.bbb.ccc,那么模块名就会是aaa.bbb.模块名 二、统一依赖 当我们建立好的module之后,发现主项目app和mudole各自的build.gradle文件都有一些相同的依赖,这个这个时候,需要进行管理,避免混乱。 一些相同的依赖

Android Jetpack系列之MVVM使用及封装

Android开发架构 如果开发过程中大家各自为战,没有统一规范,久而久之,项目代码会变得混乱且后续难以维护。当使用统一的架构模式后,有很多的好处,如: 统一开发规范,使得代码整洁、规范,后续易于维护及扩展 提高开发效率(尤其在团队人员较多时) 模块单一职责,使得模块专注自己内部(面向对象),模块间解耦 总之,开发架构是前人总结出来的一套行之有效的开发模式,目的是达到高内聚,低耦合的效果,使

js实现数组转树

1. 原生 封装工具函数 getTree 1.1 定义 -映射对象 map   数组treeList=[] 1.2 遍历 后端返回的数组 list  为 每个数组对象item 添加 children 属性 值为空数组  1.3  为映射对象 map 添加属性 并赋值  key:id值  value:item   1.4 遍历数组对象list  当item.pid为空时 

LifeCycle详解

LifeCycle的由来 解耦是为了解决传统开发某块臃肿,以达到代码量平衡、优雅、易扩展。由于Android大部分开发需要感知组件的生命周期,在对应生命周期中做对应的工作,故原始的做法就是在Activity、Fragment、Service等生命周期回调中增加相应的处理代码,这样导致Activity等组件十分臃肿、难以做扩展。LifeCycle的出现就是在外面实现对这些组件生命周期的感知能力,减

高效管理远程服务器Termius for Mac 保姆级教程

        以下是 Termius for Mac 保姆级教程,涵盖安装配置、核心功能、实战案例及常见问题解决方案,助你高效管理远程服务器(如Vultr、AWS等)。一、Termius 基础介绍1. Termius 是什么? 跨平台SSH客户端:支持Mac、Windows、iOS/Android&#xff0

手写RxJava简易框架领悟RxJava的美秒

RxJava笔记 前言 看此篇之前最好知道RxJava的使用。由于RxJava内部源码实现有点复杂,既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,只留下核心代码,加上我个人的理解,带大家揭秘RxJava的实现原理(本文不涉及框架的使用介绍)。 一、构建观察者类 Subsribler在RxJava里面是一个抽象类,它实现了Obs

dispatch_group_leave崩溃

崩溃描述 image.png 近日排查线上崩溃时,发现一个描述信息很少的崩溃,如上。由dispatch_group_leave.cold.1可知,属于dispatch_group异常 dispatch_group使用 dispatch_group使用场景:A任务依赖B/C/D子任务全部执行完成,才进行触发执行。 如何添加子任务,通常有两种方式: block dispatch_gr