Android Studio

Android-App性能优化

北城以北 提交于 2020-05-03 18:44:35
上一篇我们讲了java的引用机制,今天我们来一下和它有关的app性能优化(其实也不是很大)。 性能优化的目标 在网上也看到过很多相关的文章,他们基本总结为:快,稳,省,小,描述的很准确.如下图 (注:此图不知道啥时候收集的,如有侵权,立删): 快 如何让app在运行过程过不卡顿,运行流畅,速度快,也就是说如何解决卡顿呢?我们先看看那些因素影响卡顿? 1. UI,包括ui的绘制,刷新等 2. 启动,包括冷启动,热启动,温启动等 3. 跳转,页面跳转,前后天切换 4. 及时反馈,点击事件,滑动,系统事件 UI 这个涉及到android的系统显示原理,我们简单了解一下: Android 显示过程可以简单概括为:Android 应用程序把经过测量,布局、绘制后的 surface 缓存数据,通过 SurfaceFlinger 把数据渲染到显示屏幕上, 通过 Android 的刷新机制来刷新数据。也就是说应用层负责绘制,系统层负责渲染,通过进程间通信把应用层需要绘制的数据传递到系统层服务,系统层服务通过刷新机制把数据更新到屏幕上。 换一种方式说:Android 系统每隔 16ms 发出 VSYNC 信号,触发对 UI 进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需的 60FPS。(注:FPS 表示每秒传递的帧数。)在理想情况下,60 FPS 就感觉不到卡

冲刺随笔——Day_Three

拜拜、爱过 提交于 2020-05-03 17:20:45
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次——Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛:验证码自动识别,获取网页信息,完成模拟登录模块,开始研究课表界面布局 马俊:更新燃尽图,跟进UI界面,跟进安卓开发。 陈德渠:完成今日博客编写,对界面进行美化,界面优化 蔡泽华:初步完成了对周课表与完整课表部分数据的获取,大致了解了网页 张体杰:协助其他成员工作,PPt制作 陈家炜:设计好了界面,并进行结合数据,将班级未签功能整合到实际项目与实际数据库进行对接 王力杰:UI美化修改研究,燃尽图完成 朱紫阳:下午开会详细的拆分了项目,把橙汁项目的修改认证界面搭起来,提示框toast用法,已经可以显示出未输入学号的框框 有点卡壳 林涛: AndroidStudio使用properties资源文件,直接输出使用Log输出信息,使用起来不是很方便,所以找了一些封装好的[Log工具]参考了 类 朱紫阳:未输入提示的判断逻辑。toast的用法不清楚。 蔡泽华: 完整课表里的课程表中,一周有出现多次的课程难以解析 陈德渠: 查看了多个同类型App之后对界面美化有所灵感,但是实际上手存在问题 明天做点啥 林涛:完成课表主体界面,并与安卓小分队队员们进行课程数据的对接

冲刺随笔——Day_Three

戏子无情 提交于 2020-05-03 17:18:30
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次——Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛:验证码自动识别,获取网页信息,完成模拟登录模块,开始研究课表界面布局 马俊:更新燃尽图,跟进UI界面,跟进安卓开发。 陈德渠:完成今日博客编写,对界面进行美化,界面优化 蔡泽华:初步完成了对周课表与完整课表部分数据的获取,大致了解了网页 张体杰:协助其他成员工作,PPt制作 陈家炜:设计好了界面,并进行结合数据,将班级未签功能整合到实际项目与实际数据库进行对接 王力杰:UI美化修改研究,燃尽图完成 朱紫阳:下午开会详细的拆分了项目,把橙汁项目的修改认证界面搭起来,提示框toast用法,已经可以显示出未输入学号的框框 有点卡壳 林涛: AndroidStudio使用properties资源文件,直接输出使用Log输出信息,使用起来不是很方便,所以找了一些封装好的[Log工具]参考了 类 朱紫阳:未输入提示的判断逻辑。toast的用法不清楚。 蔡泽华: 完整课表里的课程表中,一周有出现多次的课程难以解析 陈德渠: 查看了多个同类型App之后对界面美化有所灵感,但是实际上手存在问题 明天做点啥 林涛:完成课表主体界面,并与安卓小分队队员们进行课程数据的对接

项目Alpha冲刺(1/10)

有些话、适合烂在心里 提交于 2020-05-02 12:24:56
格式描述 学长帮帮忙组——项目系统设计与数据库设计 这个作业属于哪个课程 班级的链接 这个作业要求在哪里 团队作业第五次——站立式会议+alpha冲刺 团队名称 学长帮帮忙组 这个作业的目标 描述第一天冲刺的项目进展、问题困难、心得体会 作业正文 项目Alpha冲刺(1/10) 其他参考文献 百度 项目燃尽图 会议照片 项目进展—成员情况 曾宏健: 项目进展:完成资料修改 头像修改的功能 问题困难:暂无 心得体会:编码要专心 陈志达: 项目进展:熟悉了Android studio的使用,完成了“安全中心”的布局 问题困难:暂无 心得体会:熟能生巧 郑小华: 项目进展:完成我的笔记模块的小部件和笔记模块的小部件 问题困难:暂无 心得体会:要注意细节 李康华: 项目进展:熟悉了Android studio的使用,为下一步开发打下基础 问题困难:暂无 心得体会:磨刀不误砍柴工 王玉珊: 项目进展:初步建立笔记功能模块,准备编码 问题困难:知识盲区 心得体会:学习底层知识很有必要 何翱翔: 项目进展:完成教务处认证,获取成绩接口 问题困难:暂无 心得体会:熟悉request库 林琳: 项目进展:学习《Flask Web开发实战》,学习数据库章节 问题困难:暂无 心得体会:用ORM实现数据库可以通过python代码操作数据库 林轶凡: 项目进展:完成项目燃尽图,熟悉Flask框架 问题困难

如果有一天我变得很有钱组——alpha冲刺_day2

假如想象 提交于 2020-05-02 11:35:58
这个作业属于哪个课程 2020春|S班 (福州大学) 这个作业要求在哪里 团队作业第五次——站立式会议+alpha冲刺 团队名称 如果有一天我变得很有钱 这个作业的目标 1、燃尽图。2、成员进展、困难、心得体会 作业正文 本文 其他参考文献 无 日志集合 1.燃尽图(leangoo自动绘制) 2.站立式会议图片 3.成员进展、困难及心得体会 陈启元 进展:完成了web端需要的账单表、类别表、账户表接口,开始编写服务器端处理app上传数据的功能 困难:思路有点乱,理了一下发现有几个主要问题:1、app端与服务器同一数据表有些字段不同名,json转换中如何解决赋值问题。2、app与服务器有些字段的兼容性还没确认。3、服务器端更新数据后如何方便地获得更新后的记录并返回 心得体会:要学的东西还是很多 徐哲宇 进展:正在写token验证登录 困难:不知道怎么发送json 心得:多百度多学习 刘昭玮 进展:报表页面的初步实现 困难:在使用vue封装Echart组件的时候出现了重复调用失败的问题,已解决。 心得体会:多实践总会发现一些以前没有发现的问题 张钰婷 进展:记账部分的界面编写 存在的问题:支出与收入转换时的类别切换界面还未完成 心得体会:界面的各种组件及它们的属性好多,还没能完全理解更好地应用,找到合适的方法展示页面花费了很多时间。继续加油! 叶尤澎 进展:编写了初版的账单修改页面

移动端测试===Android内存泄露和GC机制(转)

懵懂的女人 提交于 2020-05-02 03:54:18
本文转自:https://www.testwo.com/article/1153 1、前言 Hello,小伙伴们,相信大家在项目测试中都遇到过内存泄露问题,小编也着实爬过很多坑。比如小编所测项目,更换了多实例版本的sdk,横竖屏切换后有MapView没有销毁,导致内存泄露。小编测试手表项目,因为手表内存有限,测试中常遇到应用无响应或者闪退,故而小编对GC机制进行了进一步学习了解。 本文先对Android内存垃圾回收机制进行介绍,之后对分析、定位内存泄露常用的测试方法进行总结,分享给大家。 2、Android内存垃圾回收(GC机制) 2.1综述 Android 应用中默认有三个线程:“main”主线程、GC线程、和Heap线程 ,而且在GC线程运行的过程中,主线程会中断执行。Java程序与C/C++等原生程序的一个不同点就是,Java虚拟机在运行Java程序的过程中,可以自动回收不再使用的对象实例,从而避免了程序员人工管理内存的繁琐工作。如果设备是单核CPU设备,一次只能运行一个线程,因此在GC线程运行的时候,必须中断主线程。但是如果设备上有多核CPU,即主线程可以和GC线程同时运行,在这种情况下执行GC,会不会中断主线程呢?答案是会的。 虽然有不同的内存垃圾回收实现算法,但有些算法需要中断其他Java线程的执行,如果中断的时间过长,给用户的感觉就是应用的响应速度变的越来越慢

Android内存优化7 内存检测工具1 Memory Monitor检测内存泄露

牧云@^-^@ 提交于 2020-05-02 03:53:59
上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露的问题,现在通过Android Studio自带工具Memory Monitor 检测出来。性能优化的重要性不需要在强调,但是要强调一下,我并不是一个老司机,嘿嘿!没用过这个工具的,请睁大眼睛。如果你用过,那么就不用在看这篇博客了。 先看一段会发生内存泄露的代码 public class UserManger { private static UserManger instance; private Context context; private UserManger(Context context) { this.context = context; } public static UserManger getInstance(Context context) { if (instance == null) { instance = new UserManger(context); } return instance; } } public class MainActivity extends AppCompatActivity { @Override protected void onCreate( Bundle savedInstanceState) {

windows下git显示文件被修改,实际没有改动的问题解决办法

拟墨画扇 提交于 2020-05-02 00:41:34
不少开发者可能遇到过这个问题:从git上拉取服务端代码,然后只修改了一处地方,准备提交时,用diff软件查看,却发现整个文件都被修改了。这是git自动转换换行符导致的问题。 原因 不同操作系统使用的换行符是不一样的。Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动转换”的功能:如果在Windows下安装git,在拉取文件时,会自动将LF换行符替换为CRLF;在提交时,又会将CRLF转回LF。但是这个转换是有问题的:有时提交时,CRLF转回LF可能会不工作,尤其是文件中出现中文字符后有换行符时。 解决方案 1.禁用git的自动换行功能: 在本地路径C:\ Users\ [用户名] \ .gitconfig下修改git配置[core],如果没有就直接添加上去: [core] autocrlf = false filemode = false safecrlf = true git bash命令行也可以修改,最终也是修改.gitconfig配置文件: 分别执行: git config --global core.autocrlf false git config -

Android 数据存储笔记-数据库SQLite

你离开我真会死。 提交于 2020-05-01 13:25:35
我最近做项目用到了这个SQLite本地数据库,所以写篇博客总结一下,希望也能对小白有所帮助 什么时候用SQLite (有固定规则的,大量的数据要保存时) SharedPreferences是一种轻型的数据存储方式,在保存数据的时候其实存储的是key-value对,类似于Map。存储位置:/data/data/应用包名/shared_prefs/文件名.xml。通常用来存储一些 简单的配置信息。 实际开发中,SharedPreferences共享参数经常存储的数据有App的个性化配置信息、用户使用App的行为信息、临时需要保存的片段信息等。 简单且孤立的数据可保存在SharedPreferences。若是 复杂且相互间有关的数据,则要保存在数据库 中。(有固定规则的,大量的数据保存在数据库中) 文本形式的数据可保存在SharedPreferences。若是 二进制数据,则要保存在文件 中。(没有固定规则的,大量的数据保存在文件中) haredPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其只能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等

Android性能优化问题总结

有些话、适合烂在心里 提交于 2020-05-01 04:40:03
  性能优化这块,分为UI性能优化、内存优化、数据库优化、网络优化、耗电优化等等。可以从1.如何发现问题,2.怎么解决问题,3.解决效果对比,这几个方面去描述。举个简单例子——UI优化,可以从 UI出现什么问题(卡顿不流畅),怎么查找问题(手机开发者权限>GPU过度绘制 发现层级问题,TraceView CPU使用情况分析),怎么解决问题(降低层级、自定义View绘图出现问题等),解决问题后性能再次对比。 一、UI优化 a.合理选择RelativeLayout、LinearLayout、FrameLayout,RelativeLayout会让子View调用2次onMeasure,而且布局相对复杂时,onMeasure相对比较复杂,效率比较低,LinearLayout在weight>0时也会让子View调用2次onMeasure。LinearLayout weight测量分配原则。 b.使用标签 c.减少布局层级,可以通过手机开发者选项>GPU过渡绘制查看,一般层级控制在4层以内,超过5层时需要考虑是否重新排版布局。 d.自定义View时,重写onDraw()方法,不要在该方法中新建对象,否则容易触发GC,导致性能下降 e.使用ListView时需要复用contentView,并使用Holder减少findViewById加载View。 f.去除不必要背景,getWindow()