Android开发笔记

news2024/11/27 14:45:19

一、知识点

1、Notification 通知的创建流程

1)创建一个NotificationManager,获取系统服务,getSystemService()方法;
2)使用Builder构造器来创建Notification对象,设置通知的各种属性; 3)NotificationChannel 通知渠道,Android8.0引入了通知渠道,允许为要显示的每种通知类型创建用户可自定义的渠道;
4)发送通知,notify()方法;

2、刷新当前Activity: onCreate(null);

3、Intent

Intent的相关属性:

 - component(组件):目的组件   
 - action(动作):用来表现意图的行动 
 - category(类别):用来表现动作的类别 
 - data(数据):表示与动作要操纵的数据  
 - type(数据类型):对于data范例的描写   
 - extras(扩展信息):扩展信息(传值) 
 - Flags(标志位):期望这个意图的运行模式

显示Intent:直接指定目标组件名称;
隐式Intent:Android系统根据Intent属性自动匹配目标组件;

4、事件处理流程(基于监听)

外部动作——触发——事件源;
事件源——产生——事件;
事件监听器——监听到——事件;
事件监听器——事件处理器;
事件监听器——监听——事件源;

5、尺寸单位

  • px (pixels) 像素,屏幕上的点,不同设备显示效果相同,例如,HVGA代表320×480像素。

  • in(英寸) 屏幕的物理尺寸, 每英寸等于2.54厘米。

  • pt (point) 标准长度单位, 1pt=1/72英寸,用于印刷业,UI设计师会用,iOS字体单位,Android开发不涉及。

  • dpi (dots per inch) 打印分辨率,每英寸所能打印的点数,即打印精度; 每英寸点数,即每英寸包含像素个数。

  • ppi (pixels per inch) 图像分辨率, 像素密度,在图像中, 每英寸所包含的像素数目。

  • density (屏幕密度), density和dpi的关系为 density = dpi/160。density这个概念方便理解不同dpi的倍数关系。

  • dp (也即dip,device independent pixels) 设备独立像素,与密度无关的像素,基于屏幕密度的抽象单位,主要用于边距、组件大小,在320x480分辨率,同时每英寸160点(dpi = 160)的显示器上,1dp = 1px。

  • sp (scaled pixels) 放大像素,与刻度无关的像素,字体单位,可以根据用户的字体大小首选项进行缩放。sp和dp一样,以160ppi屏幕为标准,当字体大小为 100%时, 1sp=1px。

6、开发传感器应用的步骤

1)获取SensorManager对象,getSystemService(Context.SENSOR_SERVICE);
2)获取指定类型的传感器;
3)为指定传感器注册监听器,在Activity的onResume()方法中调用注册方法;

7、测试工作中的常用符号

- Pass(ok)	   		 ————		测试通过
- Pok			 	 ————		多条测试用例部分通过
- Fail			 	 ————		测试出问题,未通过
- NT (Not Test)		 ————		未测试
- NA (Not Available) ———— 		产品并无此测试用例所对应的功能
- Block			 	 ————		因某些特殊原因阻塞

8、Spring Framework系统框架

springframework 是spring 里面的一个基础开源框架,主要用于javaee的企业开发,它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫必须在每一层中必须使用Spring,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transaction Management。

在这里插入图片描述

  • Core :Spring 框架的基本组成部分,它包括控制反转及依赖注入功能。
  • Beans :实现 Spring 对 Bean 的管理,包括自动装配机制等功能。
  • Context :用于访问项目配置及自定义对象,ApplicationContext 接口是 Context 模块最重要的接口。
  • SpEL (Spring Expression Language,表达式语言模块):提供在运行时查询和操作一个对象的表达式机制。
  • JDBC :用于实现 JDBC API 的抽象层。
  • ORM :对象关系数据库映射抽象层,基于该模块,Spring 框架可以方便地集成 Hibernate 和 MyBatis。
  • OXM (XML消息绑定抽象层):基于该模块,使 Spring 框架能够支持 JAXB、Castor、XMLBeans、JiBX 和 XStream。
  • JMS :Spring 支持 Java 消息服务的重要模块,集成了 JMS 的项目即可实现消息生产和消费的功能。
  • Transactions :Spring 的事务模块,Spring 框架支持编程式和声明式的事务管理。
  • Web :即 Spring MVC,提供了基于“模型-视图-控制器”的基础 Web 应用框架,可替代 Struts 2。
  • Servlet :实现统一的监听器和面向 Web 应用的上下文,用以初始化 IoC 容器。
  • AOP :用于 Spring 面向切面的编程实现。
  • Aspects 模块:Spring 与 AspectJ 的集成,可以使用 AspectJ 来实现面向切面编程。
  • Test :支持 JUnit 和 TestNG 单元框架的集成,可以快速开展业务代码的单元测试。

9、java 小知识

- 快速生成 main 方法:psvm+回车;
- 快速生成 System.out.println():sout+回车;
- 切换Java程序:alt+/右箭头;

10、Activity的生命周期

  • 启动 当activity启动后便会进入下一状态;
  • 运行 activity处于屏幕最前端,可与用户交互;
  • 暂停 activity仍可见,但无法获得焦点,用户对它操作无响应;
  • 停止 activity完全不可见,系统内存不足时会注销该activity;
  • 销毁 activity将被清理出内存;

11、本地往GitHub上传项目

- git config --global user.name "xxx"
- git config --global user.email "xxx"
- git init
- git add
- git status
- git commit 
- git remote add origin [ git 仓库地址 ]
- git pull origin master
- git push -u origin master

补充:

  • git 拉取最新代码时,需确保当前HEAD 位于最新最近的一笔提交上;
  • gerrit push代码时,需要有合法的 commit message,且不能太长,一般在50个长度以内,title不能有特殊字符不能有空格,bug_id号需为激活状态;

12、Java优点( 较 C/C++ )

  • 解决内存泄露:垃圾回收机制
  • 空指针异常:彻底隐藏了指针的引用

13、Repo常用命令

- repo sync			#同步当前所有项目
- repo sync 【project1】 【project2】		#同步某些项目
- repo start     xxx 		#创建一个分支
- repo branches		#查看当前有多少分支
- repo status    #查询当前状态
- repo diff		 #查询未提交的修改
- git add   	 #暂存文件
- git commit 	 #提交到仓库
- repo upload 	 #上传到代码服务器

注:Repo 是Google用Python脚本写的调用git的一个脚本代码管理工具。

———————————————————————————————

二、bug及及解决方案

1、Ubuntu电脑网络卡顿

分析:

1)安装了虚拟机,主机与宿主机的网络连接方式为桥接模式,共用一个网卡,导致主机网络变慢;
2)ubuntu电脑安装了docker;

解决:

1)采用NAT+Host-only两种组合的方式 ;
2)卸载掉docker;
3)该用清华源或阿里源;

2、记事本删除记录进度条 progressDialog 调用时弹出缓慢,过程不显示,结束后不消失;

分析:

线程问题;

解决:

1)new Thread 开启一个线程,设置sleep缓存时长,最后别忘 .start();
2)在上述线程中设置时进度条调用
progressDialog.incrementProgressBy(values) 方法,value是进度条每次变化的长度;
3)无法直接在子线程中更新UI界面,需调取UI线程或者使用 handle;

3、在子线程中不能直接弹出Toast

分析:

非主线程中并没有开启 Looper;

解决:

在具体逻辑的前后加入 Looper.prepare 和 Looper.loop() 方法;

4、Toast 多次点击时重复排队显示,等待直到所有toast显示完毕

解决:

做判断,当( Toast != null )时,setText( text ) 即可;只有当Toast 为空时,才重新 new Toast;

5、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

postgresql还原bak

1、第一步肯定是要新建自己还原的目标数据库,例如: 2、进入postgresql的安装目录下的bin目录下 然后地址栏输入cmd进入命令 输入以下 psql -h localhost -U postgres -p 5432 -d SamsinoYardStandard_karamay -f "D:\desktop\zk\20230628.bak&quo…

CEO对今天的CIO们真正的要求是什么?

在当今数字化和信息时代,企业的首席信息官(CIO)的角色变得至关重要。CIO不仅需要具备深厚的技术知识,还需要在商业战略、创新和领导力方面展现出卓越的能力。作为企业的首席执行官(CEO),他们对C…

【Distributed】分布式Ceph存储系统

文章目录 一、存储基础1. 单机存储设备1.1 DAS1.2 NAS1.3 SAN1.4 单机存储的问题1.5 商业存储解决方案 2. 分布式存储(软件定义的存储 SDS )分布式存储的类型 3. Ceph 简介4. Ceph 优势5. Ceph 架构6. Ceph 核心组件7. OSD 存储后端7.1 Filestore7.2 Blu…

单轴机器人的结构与特点

单轴机器人是由马达驱动的移动平台,由滚珠螺杆和 U型线性滑轨导引构成,其滑座同时为滚珠螺杆的驱动螺帽及线性滑轨的导引滑块,可用半导体、光电、交通运输业、环保节能产业、精密工具机、机械产业、智慧自动化、生技医疗上。 相对于传统的模组…

Yalmip工具箱使用教程(1)-入门学习

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:YALMIP 1.Yalmip工具箱的下载与安装 1.1下载 Yalmip的作者是Johan Lfberg,是由Matlab平台编程实现的一个免费开源数学优化工具箱,在官网上就可以下载。官方下载…

LeetCode 0931. 下降路径最小和:通俗思路讲解

【LetMeFly】931.下降路径最小和:通俗思路讲解 力扣题目链接:https://leetcode.cn/problems/minimum-falling-path-sum/ 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一…

LeetCode 142.环形链表II

142. 环形链表 II - 力扣(LeetCode) /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detectCycle(ListNode …

Java前端开发工程师的职责

Java前端开发工程师的职责1 职责: 1.负责公司现有软件的二次使用开发、测试; 2.负责公司信息化管理软件的开发; 3.修改已有的系统方案,以维持优良的操作性能及正常的信息沟通; 4.完善公司系统,完成项目接口、开发工作; 5. 能单独根据需求…

【yarn】 ‘husky install‘ fails if ‘.git‘ directory does not exists解决方法

问题描述 环境:win10 yarn 1.22.19 问题:在使用yarn安装前端依赖时,yarn install 出现错误: .git can’t be found (see https://git.io/Jc3F9) error Command failed with exit code 1. 截图 原因分析 根据设计,husky安装必…

数据结构-双向带头循环链表

链表的分类实现带有哨兵位的双向的循环链表**定义节点的结构**初始化单个节点初始化带有哨兵位的双向循环链表打印链表销毁链表尾插尾删头插头删find函数在任意位置之前插入任意位置的删除全部代码list.hlist.ctest.c 链表和顺序表的区别 链表的分类 如下 根据上述的三种组合…

线性调频信号公式推导及matlab仿真

线性调频信号的数学表达式: 其中,t是时间变量,单位为秒(s);T为脉冲持续时间(周期);K是线性调频率,单位是Hz/s; 角度(单位为弧度&…

【通过粒子滤波进行地形辅助导航】用于地形辅助导航的粒子滤波器和 PCRB研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【MySQL异常解决】MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案

MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案 一、背景描述二、报错原因三、解决方案3.1 升级 MySQL 数据库版本3.2 修改字符集为 一、背景描述 从服务器MySQL中导出数据为SQL执行脚本后,在本地电脑执行导出的SQL脚本,…

【数据结构---排序】庖丁解牛式剖析常见的排序算法

排序算法 一、常见的排序算法二、常见排序算法的实现1. 直接插入排序2. 希尔排序3. 直接选择排序4. 堆排序5. 冒泡排序6. 快速排序6.1 递归实现快速排序思路一、hoare 版本思路二、挖坑法思路三、前后指针法 6.2 非递归实现快速排序 7. 归并排序7.1 归并排序的递归实现7.2 归并…

Word2Vec实现文本识别分类

深度学习训练营之使用Word2Vec实现文本识别分类 原文链接环境介绍前言前置工作设置GPU数据查看构建数据迭代器 Word2Vec的调用生成数据批次和迭代器模型训练初始化拆分数据集并进行训练 预测 原文链接 🍨 本文为🔗365天深度学习训练营 中的学习记录博客&…

Apache Phoenix(2):安装Phoenix

1 下载 大家可以从官网上下载与HBase版本对应的Phoenix版本。 http://phoenix.apache.org/download.html 2 安装 (1)上传安装包到Linux系统,并解压 cd /opt/ tar -xvzf phoenix-hbase-2.5-5.1.3-bin.tar.gz (2)将p…

软件测试真实企业测试流程

最近收到不少准备转行软件测试的小伙伴私信问真实企业里面软件测试流程是什么样子的? 对于这个问题,在面试的时候也是经常会被问到。 关于测试流程,100家公司可能有100套测试流程,但是基本上都是大同小异,完全可以将测…

行业追踪,2023-07-14,汽车零部件在反弹时已清仓,耐心等待第二波买点重现

自动复盘 2023-07-14 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

ELK-日志服务【kafka-配置使用】

kafka-01 10.0.0.21 kafka-02 10.0.0.22 kafka-03 10.0.0.23 【1】安装zk集群、配置 [rootes-01 ~]# yum -y install java maven [rootes-01 ~]# tar xf apache-zookeeper-3.5.9-bin.tar.gz -C /opt/[rootes-01 ~]# cd /opt/apache-zookeeper-3.5.9-bin/conf/ [rootes-…

MySQL结构以及数据管理(增删改查)

目录 1.数据库的简介 2.数据库分类 2.1关系型数据库 2.2 非关系型数据库 3.mysql的数据类型 3.1 常用的数据库类型 4.mysql的数据库结构 4.1 查看库信息 4.2 查看表信息 5.SQL 语句 5.1 SQL语言分类: 1.数据库的简介 数据库(database&#…