Android开发笔记

一、知识点

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。

Android开发笔记_第1张图片

  • 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、

你可能感兴趣的:(android,笔记)