- 博客(33)
- 收藏
- 关注
原创 MVC模式(二:Android开发中,MVC模式的具体体现)
在Android的MVC模式中,模型主要负责数据处理和业务逻辑。它通常包括数据类、数据库操作、网络请求等。模型与数据源(如数据库或网络API)交互,并通知视图层数据的变化。在Android项目中,模型通常被实现为Java类或其他数据结构,它们封装了数据以及处理这些数据的方法。
2025-04-01 15:03:30
261
原创 MVC模式(一:简单介绍mvc模式)
MVC模式,即Model-View-Controller(模型-视图-控制器)模式,是一种软件架构模式,也是软件设计模式的体现,它用于组织代码并分离关注点,广泛应用于用户界面的开发中。
2025-04-01 14:46:27
528
原创 Android 14之HIDL转AIDL通信
服务的后端,AIDL支持四种后端,分别是C++/JAVA/NDK/RUST, 我们要使用NDK(谷歌推荐),CPP和JAVA后端,加上enabled: true。3、当执行完上述的hidl2aidl指令后,会在-o 对应目录下生成aidl文件,和一些translate文件,以及Android.bp。//执行后生成初始版本号为1的api,并且生成.hash文件,并将frozen改为true。:需要用到的返回值不需要删除,要保留,只需要删除无用的status即可。会编译生成jar包,还有ndk相关文件。
2024-11-27 13:40:27
2555
原创 使用Android studio进行Unit Test中遇到的问题记录
提示:查看Android 源码,发现getVolumes,registerListener和unregisterListener是被UnsupportedAppUsage修饰,这些注解的函数、类、变量是不编译进谷歌提供的sdk里面的,所以直接使用不能通过编译器检查。
2024-10-09 11:39:10
764
原创 FORTIFY: FD_ISSET: file descriptor 1024 >= FD_SETSIZE 128 记录
其中sock不能大于1023,要不然就会出现不可控的问题,如果一个进程打开的文件描述符超过了1023,又要用select进行监听,就会出现问题。
2024-08-26 10:56:56
347
原创 fdbus client实现之增加重连机制
一般的,fdbus的client端的实现是继承CBaseClient,override接口。由于使用CBaseClient的去连接Service时,,这就需要我们引入重连技术。另外假如Service端crash了,Client端会收到onOffline状态通知,收到onOffline也需要触发重连,直到Service进程启动后才会重连成功。FDBUS Client重连Service依赖于这两个状态,,因此我这边引入了一个父类。
2024-08-21 14:53:36
707
原创 合理平衡使用低代码开发平台
低代码平台在提高效率方面具有显著优势,但也带来了潜在的质量风险。开发者的工作方式将发生改变,角色更加多元,技能需求也会跟着变化。因此,在采用低代码平台时,平衡效率与质量,考虑业务需求,并确保技术的可维护性和安全性。
2024-08-12 15:27:33
443
原创 Android 四大组件
/ 数据库和表的相关常量// SQLiteOpenHelper 类@Override@Override@Override= null;@Override@Override@Override@Override@Override2、AndroidManifest.xml注册<provider3、使用// 插入数据// 查询数据if (cursor!= null) {
2024-07-31 16:09:54
750
原创 HIDL和AIDL在HAL中应用的区别?
在Android系统中,HAL主要使用HIDL(HAL Interface Definition Language)和AIDL(Android Interface Definition Language)来定义硬件接口。相比于 HIDL,AIDL 更加简单易用,不需要复杂的工具链和编译过程,更容易学习和掌握。相比之下,AIDL更适用于高级别的应用程序接口,例如远程服务。AIDL 和 HIDL 都是 Android 中用于定义接口的语言,它们都可以在 Android 操作系统和 HAL 之间传递数据。
2024-07-25 17:53:24
1113
原创 Fdbus的一些记录
基于FDBus框架的CBaseWorker类通常会在一个独立的线程中执行工作任务。它的工作机制通常包括以下几个方面:1.:CBaseWorker通常会维护一个任务队列,用于存储需要执行的工作任务。当有新的任务到来时,会被加入到任务队列中。2.:CBaseWorker可能会使用事件循环机制,不断地从任务队列中取出任务,并执行相应的回调函数。这样可以保证任务按顺序得到执行,并且不会阻塞主线程。3.
2024-07-25 17:38:29
558
原创 通过墓碑文件(tombstones)定位native代码crash时具体挂在了哪行代码上
寻找 0000000000448548 /system/lib64/libhwui.so 的崩溃的地方。即运行addr2line -Cfe libhwui.so 0000000000448548。在服务器代码里,先source 和lunch之后再用addr2line。这样就可以定位到代码具体出错的行,然后解决问题即可。比如说vendor/lib64在路径运行。
2024-05-13 15:20:18
808
原创 字符串问题
最近工作中遇到一个问题:java:fw1、首先这个通路是支持设置数据,设置的数据保存在qnx的某模块,这里就简单写qnx。也支持获取数据,获取的数据是从qnx。2、fw通过hal获取qnx里面的一个字符串version。fw hal设置数据下去的打印的version:“123456789”。长度9。qnx的log打印version:“123456789”,没有长度打印。3、然后获取字符串version时,fw 的log打印是version:“123456789À€À€7”,长度12。
2024-03-04 17:40:37
645
2
原创 android开发之遇到的界面问题
问题背景:之前的项目有两个屏幕a和b,多屏显示的代码原本是适用于屏幕a的,用于在特殊情况下覆盖屏幕a,但是新项目,将原来屏幕a和屏幕b显示的内容集成显示在一个物理屏幕a上面了,也就是说将多个虚拟屏显示在一个物理屏上面了,此时屏幕b的层级比多屏显示覆盖的内容高,导致多屏显示的内容不能显示在最上层。一般的多屏显示是通过activity显示的。因为项目需求,需要使用service来创建一个第二屏幕显示,在这里记录一下。创建一个displaycontex。然后才能设置屏幕id。和activity不同的是要。
2023-09-11 17:58:49
214
原创 android xml遇到的问题
当在XML中使用特殊字符时,需要使用转义字符来表示它们。特殊字符有: “”,“&”,“”", “'”例子:在xml中保存"
2023-09-11 17:37:37
200
原创 android设计的布局在切换为阿拉伯语时,界面出现错乱
设备的语言切换为阿拉伯语时,设定的布局出现异常,异常截图如下:期望结果:将layout_marginLeft替换为layout_marginStart;如果有layout_marginRight替换为layout_marginEnd。替换之后的效果:
2023-04-20 14:38:21
1254
原创 打开一个Android 项目正在同步时,gradle报错:你的主机中的软件中止了一个已建立的连接
gradle报错:你的主机中的软件中止了一个已建立的连接
2023-04-20 14:22:46
1447
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--练习--结构体
代码功能如下:学校正在做毕设项目,每名老师带领3个学生,总共有3名老师,需求如下设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放3名学生的数组作为成员学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值最终打印出老师数据以及老师所带的学生数据.#include<iostream>#include<string>using namespace std;struct student{ string name; int
2020-10-20 18:54:51
952
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--练习-结构体中const的使用
#include#includeusing namespace std;struct Student{string name;int age;int score;};//将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来void prinarr(const Student *p){//p->score = 80;//形参加了const修饰之后,一旦有修改的操作就会报错,以防止我们的误操作cout << “姓名:” << p->na
2020-10-20 15:34:38
260
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--练习-结构体作为函数参数之值传递、地址传递
注意:不想修改主函数中的数据用值传递,否则用地址传递#include#includeusing namespace std;struct Student{string name;int age;int score;};//1、值传递void prin01(Student p1){p1.age = 35;p1.score = 60;cout << “pin01函数内学生的姓名:” << p1.name << “年龄:” << p1.
2020-10-20 13:32:01
254
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--练习-结构体嵌套结构体,数组
代码功能:每个老师辅导一个学员,老师的结构体中,记录学生的结构体,输出老师的信息和该老师辅导学生的信息#include#includeusing namespace std;//创建教师结构体struct Teacher{int id;string name;int age;struct Student *stu;}t1;//创建学生结构体struct Student{string name;int age;int score;}s1;int main(){int
2020-10-20 12:58:32
273
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--练习--结构体指针
代码功能:通过结构体指针访问结构体的成员,在这里我定义了结构体变量,和结构体数组来理解。#include#includeusing namespace std;//定义结构体struct Student{string name;int age;int score;};int main(){//1、创建结构体变量Student s1 = { “张美丽”,18,100 };//2、定义结构体指针并指向结构体变量Student *p1 = &s1;//3、通过结构体指针访
2020-10-20 11:03:45
261
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--练习-结构体数组
作用:将自定义的结构体放入到数组中方便维护语法:struct 结构体名 数组名[元素个数] = { {} , {} , … {} }#include#includeusing namespace std;struct Student{string name;int age;int score;};int main(){struct Student arr[3]={{“张美丽”,18,100},{“曾美丽”,18,100},{“彭美丽”,18,100}};for (int
2020-10-19 22:33:19
232
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--结构体定义和使用
代码功能:以三种不同方式创建三个学生结构体变量,并分别显示三个学生的姓名,年龄,分数#include#includeusing namespace std//1、创建学生数据类型:学生(姓名,年龄,分数)//自定义数据类型,一些类型集合组成的一个类型//语法 struct 类型变量{成员列表}struct Student{string name;int age;int score;}s3;int main(){//2、通过学生类型创建具体学生struct Student s1
2020-10-19 20:17:14
424
1
原创 黑马程序员匠心之作|C++教程从0到1入门编程--数组 函数 指针练习
代码功能封装一个函数,利用冒泡排序,实现对整型数组的升序排序#includeusing namespace std;//冒泡排序函数//参数一数组首地址,参数二数组长度void bubblesort(int * arr, int len){for (int i = 0; i < len - 1; i++){for (int j = 0; j < len -i- 1; j++){//如果j>j+1的值,交换数值if (arr[j] > arr[j + 1]){
2020-10-19 19:39:20
337
1
原创 (黑马程序员匠心之作|C++教程从0到1入门编程写---指针和函数练习
黑马程序员匠心之作|C++教程从0到1入门编程写---指针和函数练习代码功能:分别通过值传递和地址传递的方式交换字符a和字符b的值代码功能:分别通过值传递和地址传递的方式交换字符a和字符b的值#includeusing namespace std;void swap01(char a, char b) //值传递{char temp;temp = a;a = b;b = temp;cout << “swap01 a=” << a << endl;
2020-10-19 19:12:12
234
1
转载 memcpy的用法
函数原型void memcpy(voiddest, const void *src, size_t n);功能由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。头文件#include<string.h>返回值函数返回一个指向dest的指针。说明1.source和destin所指内存区域不能重叠,函数返回指向destin的指针...
2019-06-19 17:27:09
203
转载 严重性代码说明项目文件行错误C4996'strcpy'
学习中遇到的问题:严重性代码说明项目文件 行错误 C4996 ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Te...
2018-12-03 20:53:09
490
转载 HTTP请求包及应答包报文主要结构组成
HTTP请求报文一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。1.请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1方法字段就是HTTP使用的请求方法,比如常见的GET/POST其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别:HTTP1...
2018-11-29 20:18:18
7961
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人