android项目学习心得(全源导航)
1、acitivity的跳转,返回上一个界面是结束当前界面,而不是从当前界面去跳转前一个界面(即将前一个界面创建了一遍),概念要理清,具体写法由隐式和显式多种写法。像这种操作UI界面,可以多使用fragment,就像看新闻点击一层层推送新闻,每次退回都是返回前一个浏览的新闻。
2、写Android代码的时候,也要注意java中空指针问题,空指针就是在栈中声明了一个对象,但是并没有在堆中实例化,要先if-else判断下传参操作的对象是否为null。
在一些转换(强制)类型的代码里,最好也要用try-catch进行异常判断(比如接口和类相互转化),如果转换失败最好再抛出异常,便于检查代码。
在acticity里直接对activity内容进行操作,最好不要定义activity,而是使用官方getActivity()更加安全。
3、对于activity的生命周期的理解,这一块比较重要,在写控件注册和取消注册的时候,要确定activity激活和销毁的时候,哪个函数在栈顶,用CSDN模板不一定次次都行的通。这个和activity的启动方式有关,除了singleInstance(类似支付宝页面,不能再创建新的支付界面,只能用栈中唯一的那个支付界面),其他三种用的最多,当然根据情况如果没必要使用太多内存,还是用标准的启动方法比较好。
4、app运行闪退,看Manifest里面有没有注册活动,自定义activity有时候会没有自动注册;也可以将Manifest里面启动intent赋给出问题的activity,如果没有闪退,考虑前一个activity的layout有没有注册准确或者跳转语句有没有写错跳转对象的类,如果闪退了则是该activity出现问题,先检查layout,然后看看是不是有空指针异常,从而进行异常判断操作。还有一种情况就是权限有没有给全,在开发定位,网络资源的时候,要打开网络权限以及其他厂家SDK里的相关权限。
5、再学习了接口之后,发现Android上按钮等控件的点击触发事件,实际上是创建接口的匿名实现类的匿名对象,这样做方便。
Android里:
捕获的时候,若方法形参里面含有回调函数,建议使用匿名类对象。
6、 当ros系统执行命令roscore无法启动,并且发现报错是无法连接本地服务器,这时候要去修改bashrc文件里的ROS_HOSTNAME 和 ROS_MASTER_URI一致即可。( hostname是主机名,用于在系统上标识一台机器; IP地址(联网后分配的URI)是在TCP/IP网络中唯一标志一台机器)。
7、使用try-catch-finally处理编译时异常,是得程序在编译时就不在报错,但运行时仍可能报错,相当于我们使用try-catch-finally将一个编译时可能出现的异常,延迟到运行时出现。
8、Android里的服务service和普通activity的一个显著区别是当跳转到service界面时,即使退出也可以继续运行服务里的程序,类似哔哩哔哩后台视频播放功能。而bindservice是随着activity的关闭而关闭。应用程序是一个默认的单线程单任务的程序,不能去阻塞UI线程,不能在UI线程外访问UI组件。同步线程处理类似于打开一个网站要有进度条显示,而异步就是微博中点击收藏,只需要告诉用户是否收藏成功,不需要特地等待。在开发过程中可以将显示的进程放进UI进程,而那些费时的进程则可以放进自己定义的进程。
9、线程里的sleep函数可以强制线程阻塞,这让我想起了本科同学玩王者荣耀,同学a用的是oppor9,同学b用的是华为,a喜欢用刺客类型的英雄,在地图漫游的时候游戏不卡,一旦组团开大就会变卡,硬件系统着实会对软件发挥性能造成影响,但在时期不长的更新的情况下,也不排除工作人员对英雄的大招进程周期故意加了sleep函数,然后和游戏方有利益关系的手机厂商借此推出新机型,让游戏识别新机型调出没有sleep的进程,造成手机性能好的假象。
10、异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。
违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。
11、首先明确导航的基本概念:检测和控制载体从一个地方移动到另一个地方的过程。常用的坐标系有日心坐标系、地球坐标系、地理坐标系等。对于地球,地心坐标系和地球坐标系是相似的,他们的区别在于地心惯性坐标系的原点不转动,而地球坐标系与地球固连,随地球一起转动。对于载体,载体的航向角、横滚角、俯仰角是很重要的参数,机体坐标系一般采用地理坐标系,即原点在载体重心,x轴水平向东、y轴与当地子午线一致、z轴指天向上,这就是东北天坐标系。
基本的坐标变换按照z-x-y轴旋转,变换矩阵按哪个轴旋转,哪个轴为1,例如姿态变换矩阵,还有位置变换矩阵,在求解位置矩阵的时候可以将矩阵中的角度计算公式简化为9个变量,再用三角函数求解,并且由速度矩阵进行微分可以求得速率矩阵,前提是进行初始对准,即当地位置已知。
地球是一个梨状的椭球,有四个比较重要的线,l1:地心垂线、l2:引力垂线、l3:地理垂线、l4:重力垂线。
12、Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
Finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
13、error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况
14、加速度计测得其实是比力,在地心惯性坐标系中,加速度等于引力矢量与比力之和,比力,通俗讲就是载体相对惯性空间的绝对加速度和引力加速度之差,这个量对于姿态矩阵计算很重要,体现在,由比力(机体)推出比力(导航)推出速度推出角速度推出姿态微分矩阵最后得出姿态矩阵,由此得到横滚、俯仰、偏转角,同理还可以得出导航位置信息。
15、捷联惯导相比传统的平台惯导,用数学计算平台代替了物理平台,便于维护体积小重量轻成本低,便于采用余度技术,提高可靠性。根据组合结构、信息交换以及组合的程度不同,SINS和GPS组合可以分为松组合、紧组合、超紧组合和深组合四种组合模式:松组合是一种低水平的组合模式,在该系统中GPS和SINS单独工作,通过专用接口将两者的量测数据输入组合滤波器,利用GPS信息通过滤波器估计并校正SINS误差,使其保持较高的导航精度;紧组合根据SINS信息和卫星星历计算接收机相对于卫星视线方向的距离和距离变化率与GPS码环和载波环得到的伪距伪距率相减作为卡尔曼滤波器的量测信息,然后利用滤波器估计SINS误差率和接收机钟差等对SINS进行校正;超紧组合还利用SINS输出的速率信息来辅助GPS的跟踪环路;深组合是以矢量跟踪为基础采用SINS与GPS接收机信号相关器的输出进行数据融合。
16、对于代码的优化,除以2可以用>>1代替;>>>无符号右移,在androidstudio里面运行测试类,出了java类放的位置要正确,测试函数前也要加上注解@Test,这样才能运行成功,并且结果在logcat里查询.
17、Android通信机制:message是数据载体;handler功能是发送消息、处理消息、移除消息;CONTEXT是提供了关于应用环境全局信息的抽象类,通过他的对象才可以操作系统或应用的相关资源;
18、鸿蒙开发IDE DevEcoStudio打开工程的目录千万不能包含中文。安卓内部存储需要root权限,建议把文件保存到sd卡上。
android项目学习心得(全源导航)相关推荐
- Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...
- 记录第一次开发android的学习心得
文章目录 前言 一.自定义View 1.编写自定义view的样式 2.在activity对应的页面引用 3.编写自定义view java文件 二.mvp框架 1.contract 2.activity ...
- android项目实战博学谷源码_阿里爆款SpringBoot项目实战PDF+源码+视频分享
前言 关于SpringBoot网络上有太多的博客跟资料,其影响力想必不用我多说了.它作为当前最流行的微服务框架,不但使用更加简单,而且功能更加丰富.性能更加稳定和健壮.其"约定大于配置&qu ...
- android中级培训,Android 中级学习心得
不知不觉一个月又过去了,中级部分已经学习完毕,给大家讲讲学习心得,希望对新人有所帮助,中级部分主要是一些控件的设置,以及实现一些控件的功能. Android通知系统,Tostask 比较常用:进度条p ...
- android项目实战博学谷源码_Vue框架:史上最详细的Vue实战项目之喵喵电影(视频+源码)...
Vue是web前端中重要的框架之一,与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计,Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.所以,对于web前端开 ...
- Android开发学习心得体会
文章目录 写在前面 一.Android开发是什么? 1.android开发面向那些应用? 2. 现在移动应用开发得项目架构方式? 3.怎么去尽快入门? 4.初学者要搞清楚的问题? 二.总结项目开发 1 ...
- Android项目中调起手机地图导航
现在,移动应用中集成地图已经成为一种趋势.导航 - 作为地图中不可或缺的一项功能,被很多移动应用所青睐,然而,导航方式选择上,为了减少不必要的资源和apk容量,一般应用都选择通过调用第三方的地图应用来 ...
- android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...
1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为 2,为了使LISTVIEW的ITEM在点 ...
- Spring IOC学习心得之源码级分析ContextLoaderListener的作用(IOC容器初始化入口)
ContextLoaderListener类是负责初始化IOC容器,即在我们的web项目中,这里就是IOC容器初始化的入口,由这个类启动IOC容器的初始化. 它配置在web.xml中,比如如下配置: ...
最新文章
- Oracle profile 用户资源限制 说明
- Android属性动画 监听器、翻转、暂停和恢复
- LINQ to SQL学习的几个问题
- retinex 的水下图像增强算法_图像增强论文:腾讯优图CVPR2019
- 计算机组成原理与应用,计算机组成原理简答与应用
- 年轻人不通人情世故的C++短处中
- mysql的ps.setmaxrows_mysql自定义函数实现表的指定列进行数据脱敏(PS:来自mysql小白的提问)...
- ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1
- 网络编程—代码—TCP网络传输
- PHP获取IP所在地地址
- 推荐|风控教父新书来袭(含红宝书三本风控秘籍)
- pytorch学习笔记(二十四):深度卷积神经网络(AlexNet)
- ES6 模块化【暴露、引入、引入并暴露】
- 辐射避难所买了东西显示服务器异常,辐射避难所有哪些BUG 现存BUG说明及解决方法盘点...
- 数据库SQL实战-查找描述信息中包括robot的电影对应的分类名称以及电影数目(mysql)
- paper:Attention Is All You Need(模型篇)
- linux双显卡分屏显示,linux NVIDIA显卡双屏扩展
- 世界国家及中国各省市级地图ArcGIS MXD/SHP/QGIS/JSON/SQL数据文件【免费下载】
- 在中国,哪个互联网行业职位更有前途?
- 编码电机测速(stm32f1/HAL库/CubeMX/编码器模式/平衡小车/直流减速电机/超详细)
热门文章
- 设计一个个人纳税计算程序
- idea选中多行的一列、一竖(不是多行的全部内容)
- 研读 项目名-LinkMap-normal-x86_64.txt
- windows蓝屏原因速查表(常见蓝屏原因与解决方法速查(适用于Windows 7/8/8.1/10/11))
- halcon学习_超人启蒙班10-20课
- 电脑上打开chm文件时系统提示:不能打开文件:mk:@MSITStore:(文件路径)
- Python绘制节点是饼状图的社交网络图(Plot network with pie chart)
- linux 系统级性能分析工具 perf 的介绍与使用
- win10资源管理器无法最小化,无法移动
- 【IDEA设置和 操作遇到的 】会持续更新