一、知识点
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;