当前下载目录权限不足软件集成开发技术的不足有哪些?

软件故障定位技术进展_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
软件故障定位技术进展
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩11页未读,继续阅读
你可能喜欢君,已阅读到文档的结尾了呢~~
软件复用技术的研究及其应用,软..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
软件复用技术的研究及其应用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口来自子话题:
先介绍下自己的背景情况,题主可以作下参考:
&br&1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
&br&2.去年11月中开始系统学习编程语言,由于想做Android开发,所以入门语言选择了Java。
&br&3.11月中到12月中,边看传智播客的一套视频边敲里面的练习。
&br&4.12月中到1月中,20天左右时间看了《编程之美》,并用Java实现书里百分之五十左右的算法题,剩下的题由于难度太大
或者比较复杂,当时没有深入研究下去。
&br&5.1月中到2月中,选择了网易公开课里面的《斯坦福大学公开课—编程方法学》这套视频,同样是边看视频,边完成里面的Assignment。在这里感谢帅帅同学@王帅 推荐这套视频。里面的Assignment题都是经典题目,对于初学者来说非常适合。
&br&6.2月底开始学习Android语言,花了1个月左右的时间,照着《第一行代码》里面的例子,敲代码进行实现。
&br&&br&由于在学习编程之前就有两个小产品的构思,所以也没有想自己基础是否打扎实了,先试着去实现,看看能不能做出个可用的产品来。截止到目前为止,两个小产品都已经开发完毕了,其中一个“苹果序列号查询”已经在小米、豌豆荚、Google Play、魅族Flyme等应用市场上线并且有了一版更新,本篇文章就结合这个应用和题主的问题来说下自己的想法,同时也当是此应用的一个开发总结。
&br&&br&-----------------------------------------
&br&&br&问题1:开发一个APP有多难?
&br&&br&这个与产品的复杂度有很大的关系,复杂度包括业务逻辑多不多,业务模块多不多等,对于玩票的爱好者或者初学者来说,一般会先选择功能比较少的产品来实现。我的第一个APP“苹果序列号查询”就属于这种功能很少,逻辑不复杂的应用,简要来说就是:
1.找一个API,根据序列号去请求查询数据,返回数据后进行解析呈现
2.另一个大功能就是记录查询历史
&br&功能少,逻辑不复杂对于我来说有一个好处是:虽然心里还是没底能不能完成,但是至少自己思路一直很清晰,先完成什么事情,再去完成什么事情。
&br&&br&最终第一版做出来大概花了10天左右,程度是刚好能用,但是有好几个需要优化的功能,以及需要新添加一些功能。当时由于很想快点上线同时也看看有没有一些反馈,就把这个很糙的1.0版上线了。后来帅帅同学@王帅 提了好几点优化建议,再结合自己此前的想加的功能,也就是第2个版本的改进目标了。第2版开发大概花了5天左右,最终在5月18日上线(4月14日上线,到目前为止下载量已经超过1000)。现在,“苹果序列号查询”是这个样子的:
&br&&img src=&/aceb2f5c022f66bccb8b44ce_b.jpg& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&/aceb2f5c022f66bccb8b44ce_r.jpg&&&img src=&/698af2afc12_b.jpg& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&/698af2afc12_r.jpg&&&img src=&/ea05ccf0be5b75d779cbf6_b.jpg& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&/ea05ccf0be5b75d779cbf6_r.jpg&&&br&关于开发“苹果序列号查询”具体实现逻辑介绍,请移步(最近好像需要翻墙):&a href=&///?target=http%3A//jeffinbao.github.io/android//applesnquery-summary-forcast.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JeffinBao - Android开发,读书,见人,行事&i class=&icon-external&&&/i&&/a&&br&&br&问题2:需要经历哪些流程?
&br&1.像我这样没有编程基础的,学习基础知识的过程肯定是必须的。我的学习过程在背景介绍里面已经描述过了。
&br&2.有了一些基础之后,就需要有做出应用的构思。如果没有自己想要做的产品,类似于天气查询这样很多人都会拿来练手的应用是比较好的选择。API成熟;做过的人多,有问题随时查询基本都能有答案。我做“苹果序列号查询”是因为之前没有这样的应用,每次需要查询苹果产品激活信息都要去那些广告繁多的网站上,体验很不好。刚好聚合数据又有苹果序列号查询的API,所以就想自己做一个
&br&3.这一步就是写代码的过程了,对于Android来说,代码有两个方面:布局配置(xml)+具体业务逻辑(一般用Java语言)。
&br&4.完成开发之后就是在各大应用市场上线了。
&br&&br&上面所有流程,对于新手来说肯定会遇到各种各样的问题,还好Google搜索很强大,遇到问题,大胆去搜吧。
&br&&br&问题3:难点都在哪里?什么时候出现?
&br&就像上面说的一样,新手会遇到各种各样的问题,我不认为都是难点,由于对于新事物的不熟悉,很多别人认为很简单的地方在我这里都会成为拦路虎,唯一能做的就是保持耐心,不断去找答案。比如在“苹果序列号查询”开发过程中,阻碍最长时间的是这样一个问题(耗了两天才解决):在使用聚合数据API时,请求数据的一个代码块始终无法执行到,我在网上查了两天,再反复看自己的代码,都没有解决。实在没办法了,工作日的时候,向聚合数据的工程师求助,最后问题是我在配置文件里面少写了一行代码,导致sdk初始化不成功。聚合的工程师在远程很快就发现了这个问题,所以我认为遇到的不见得都是难点,关键还是遇到问题后自己怎么去寻找解决问题的途径和方法。
&br&&br&问题4:需要哪些人员进行开发?
&br&标准的配备一般是:产品,设计,软件工程师,测试工程师
&br&但是根据项目大小以及性质,可以精简。个人项目,当然1个人就充当了上面4种角色了。产品原型在纸上画出来,设计样式软件工程师在代码中不断调整实现,软件工程师写完后自己进行简单测试。
&br&&br&问题5:需要多少钱多少时间?
&br&钱方面不清楚,时间上也是根据具体应用业务逻辑多不多,业务模块多不多来决定的。目前我个人完成的2个应用,做出第一版花费的时间都在10-15天左右,这个速度肯定是偏慢的,因为对于我来说很多知识都需要去现学。
&br&&br&------------------------------------
&br&&br&写了这么多,不知道有没有帮助到题主,下面我也想安利下自己的应用以及在求职中的自己:
&br&&br&1.小米、豌豆荚、魅族Flyme、Google Play、锤子应用商店上搜索“苹果序列号查询”,有任何问题,欢迎反馈给我丫。
&br&&br&2.第二个应用做的是个人简历—JeffinBaoCV,没有上线,感兴趣的朋友可以通过下面链接下载(由于身边手机不多,可能在小屏幕低版本系统的手机上会有适配问题,如果有,也欢迎反馈给我丫,多谢):&a href=&///?target=http%3A///s/1g39kq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&百度云 请输入提取密码&i class=&icon-external&&&/i&&/a&.(提取码:9x6d)
&br&&br&3.下面是跟我有关一些主页的链接:
个人主页:&a href=&///?target=http%3A//jeffinbao.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JeffinBao - Android开发,读书,见人,行事&i class=&icon-external&&&/i&&/a&&br&
主要用于写技术文章和一些自己认为写得比较好的文章,刚开始用jekyll引擎不久,所以内容比较少。
GitHub主页:&a href=&///?target=https%3A///JeffinBao& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JeffinBao (Jeffin.Bao) · GitHub&i class=&icon-external&&&/i&&/a&&br&
主要用于托管自己的代码,寻找一些好的开源项目来学习使用。
&br&&br&-------------------------------------
&br&&br&深知自己在Android开发上只是个入门选手,但还是想踏出这一步开始找工作,原因有以下几点:
&br&1.从去年11月辞职开始,这大半年时间中除去出去玩+过年,真正学习编程的时间在5个月左右,我认为这是我的劣势:接触编程时间太短;但也是我的优势:这5个月中,从结果来说,我通过自学以及师友的帮助,完成了两个我个人构思的应用,虽然比较简单,但是通过这两个应用,让我了解了如何完成一个应用的开发上线以及维护。也证明了大学毕业1年半以后我的学习能力依旧没有丢掉。
&br&2.希望能接触更复杂的项目,我相信真正面对用户的商业应用挑战更大当然也更能让我成长。
&br&3.希望能接触牛人,总是一个人闷着学习开发,缺少与牛人的沟通交流对于技能的成长是不利的。
&br&&br&如果你对我感兴趣,请私信我或者通过下面邮箱联系我吧,谢谢!
&br&邮箱:
先介绍下自己的背景情况,题主可以作下参考:
1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
2.去年11月中开始系统学习编程语言,…
来自子话题:
开源项目,去google code上,很多很优秀的项目。
&br&&a href=&///?target=http%3A///hosting/search%3Fq%3Dlabel%253aAndroid& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/hosting&/span&&span class=&invisible&&/search?q=label%3aAndroid&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
&br&&br&开源库:
&br&&a href=&///?target=https%3A///cyrilmottier/GreenDroid& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/cyrilmottier&/span&&span class=&invisible&&/GreenDroid&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&比较全面,绝大部分的布局都有包括
&br&&a href=&///?target=https%3A///johannilsson/android-actionbar.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/johannilsson&/span&&span class=&invisible&&/android-actionbar.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 导航条
&br&&br& 这里面有好几个游戏的开源库。
&br& &a href=&///?target=http%3A///2011/10/free-android-ui-library-component.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/2&/span&&span class=&invisible&&011/10/free-android-ui-library-component.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
&br&&br& 想看优秀的UI设计?
&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
&br&&br&详细的开发资料?
&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
&br&&br&各种尺寸按钮自动生成?
&br&&a href=&///?target=http%3A//android-ui-/hg/asset-studio/dist/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&android-ui-&/span&&span class=&invisible&&/hg/asset-studio/dist/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
&br&&br&添加一个,最好的Android开发社区,可以gmail订阅,这里面很多优秀的个人和团队开发者。
&br&&a href=&///?target=https%3A///forum/%23%21forum/china-android-dev& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/forum&/span&&span class=&invisible&&/#!forum/china-android-dev&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
&br&&br&List of open source Android applications
&br&&a href=&///?target=http%3A//en.wikipedia.org/wiki/List_of_open_source_Android_applications& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&en.wikipedia.org/wiki/L&/span&&span class=&invisible&&ist_of_open_source_Android_applications&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
开源项目,去google code上,很多很优秀的项目。
开源库: 比较全面,绝大部分的布局都有包括
导航条 这里面有好几个游戏的开源库。
想看优秀的UI设计? …
来自子话题:
能别扯了不?&br&&br&安卓系统的源代码本身相比 Windows 系统来说,是小得不能再小的一套代码。&br&&br&而这套代码,从底到上已经被全球码农研究得不能再透了,开源的安卓里面若是有监控代码,你是在侮辱全球程序员的智商。&br&&br&所以说,Google 在开源 android 中植入棱镜,这绝对不可能。&br&&br&当然了,具体每个公司发布的手机,就未必清白,因为,他们自己可以植入一些东西,而那些东西对最终用户并不是开源的,所以手机里面植入棱镜的可能性存在(虽然也未必真的有)。&br&&br&另外,在 Android 手机中,通常可能带有 Google 的 GMS 框架,这部分是闭源的,但 GMS 框架并不是 Android 系统的一部分。如果(仅仅是如果) Google 真想要植入监控,完全没有必要在开源的 Android 系统中置入,而是在 GMS 框架中植入即可。&br&&br&——所以简单的说,在 Android 开源系统层面植入监控不可能,非常影响 Google 的公司形象,如果一定要植入,可能会是在 GMS 框架层面,而这严格的说来并不是 Android 系统的一部分,你编译一个开源的 android 系统并不会含有这些代码跟应用。
能别扯了不?安卓系统的源代码本身相比 Windows 系统来说,是小得不能再小的一套代码。而这套代码,从底到上已经被全球码农研究得不能再透了,开源的安卓里面若是有监控代码,你是在侮辱全球程序员的智商。所以说,Google 在开源 android 中植入棱镜,这绝…
来自子话题:
我是半路出家做android的,下面这些网站的视频帮助了我不少,建议最好看android官方文档和源码,进阶的视频要有实际的开发经验后观看才有深刻的体会。&br&&br&&br&&b&基础:&/b&慕课网的Android频道,移动端上可以设置播放速率,很方便&br&&a href=&///?target=http%3A///course/list%3Fc%3Dandroid& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&移动开发_Android入门基础到高级教程&i class=&icon-external&&&/i&&/a&&br&&br&&b&进阶:&/b&阿里技术沙龙、Info演讲中与Android相关的课程、Google官方推出的性能优化课程、腾讯bugly推出的几个关于Android性能优化的课程&br&&a href=&///?target=http%3A//club.alibabatech.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&阿里技术沙龙&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//q.com/cn/presentations& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&InfoQ演讲&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///playlist%3Flist%3DPLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&a&i class=&icon-external&&&/i&&/a&&a href=&///?target=https%3A///playlist%3Flist%3DPLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ndroid performance pattern&i class=&icon-external&&&/i&&/a&&a href=&///?target=https%3A///playlist%3Flist%3DPLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&s&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///vplus/bugly& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&腾讯Bugly的个人频道&i class=&icon-external&&&/i&&/a&
我是半路出家做android的,下面这些网站的视频帮助了我不少,建议最好看android官方文档和源码,进阶的视频要有实际的开发经验后观看才有深刻的体会。基础:慕课网的Android频道,移动端上可以设置播放速率,很方便进阶:…
来自子话题:
我觉得Android开发上有三个层次技术:&br&&br& 1. 第一个层次和传统的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外设的驱动以及使能方面。多需要熟悉Linux内核,Android框架定义中驱动的接口规范等等,这部分开源社区的力量最大。这个层次技术主要需求方是是各种CPU和Android设备解决方案供应商。
&br&&br&&br& 2. 第二个层次主要是涉及Android框架中间件部分,如多媒体/3D框架,Java虚拟机等等,这部分Google控制的是最严格的,因为他要控制 Android各种feature以及捆绑自己的移动互联网应用,必须规范中间件。这部分所涉及的软件技术也最多,从各种C/C++库,Java虚拟机性 能,用户体验抽象到数据库设计等等很大的内涵。开发的一般也是选择一个方向发力。另外深度定制Android ROM重点也是这个层次。&br&&br& 3. 第三个层次就是App开发层次,这个层次主要就是利用Android SDK开发了。很多C/C++出身的觉得是用Java开发,其实Java就是啥都是指针的C++,外带try/catch以及垃圾收集,上手其实是很快的。Android程序最重要一点是理解生命周期概念,将一个Activity和Linux进程关系搞清楚,啥时候这个进程启动,啥时候睡眠,啥时候退出,后台的事件循环如何运行的,最后时刻要提醒自己虚拟机在运行,垃圾收集在运行。Google Code上有还多参考代码,在看中学,体会很快的。&br&&br&另外,本人采用了一种特别的模式来进行Android程序开发:Java只负责界面,用NDK来做各种复杂的业务和数据处理,Java与NDK之间设计好API以及事件传递方式(Android SDK 中Localsocket就可以很好用做事件发送)。这种方式适合C/C++背景的开发人员上手Android,Java无需达到熟练即可。&br&
我觉得Android开发上有三个层次技术: 1. 第一个层次和传统的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外设的驱动以及使能方面。多需要熟悉Linux内核,Android框架定义中驱动的接口规范等等,这部分开源社区的力量最大。这个层次技术主要需求方是是各种…
来自子话题:
任何魅族设备,都不适合新手做开发,也不适合做日常开发。坑实在太多,茫茫多的莫名其妙的bug。开发首推Nexus5,便宜,实惠,原生。&br&&br&当然,当开发到一定程度准备上线的时候,为了跑稳定性,跑兼容性,又必须买魅族设备,因为一般魅族的机器测试下来没问题,其他机器基本也没问题了。
任何魅族设备,都不适合新手做开发,也不适合做日常开发。坑实在太多,茫茫多的莫名其妙的bug。开发首推Nexus5,便宜,实惠,原生。当然,当开发到一定程度准备上线的时候,为了跑稳定性,跑兼容性,又必须买魅族设备,因为一般魅族的机器测试下来没问题,…
来自子话题:
&a data-hash=&c92c97e9b39ed8280aac527c3e5f02a8& href=&///people/c92c97e9b39ed8280aac527c3e5f02a8& class=&member_mention& data-editable=&true& data-title=&@某泽& data-tip=&p$b$c92c97e9b39ed8280aac527c3e5f02a8&&@某泽&/a&&br&先说结果,&b&activity实现&/b&&br&&br&从实现上考虑,我也觉得使用Fragment会更好一些,只要在Container Activity注册广播监听播放状态就行了。&br&而都用Activity的话,需要封装BaseActivity在OnResume注册监听、在onPause取消监听,然后界面也每个Activity都会有一个状态栏,实现起来感觉还是会比上一个方案麻烦。&br&&br&那到底是什么呢?&br&&br&正好之前写了个工具,可以查看当前显示的activity,需要的同学可以自取,支持Android 5.0+&br&apk &a href=&///?target=https%3A///waylife/DemoCollections/tree/master/ViewDebugHelper/apks& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DemoCollections/ViewDebugHelper/apks at master · waylife/DemoCollections · GitHub&i class=&icon-external&&&/i&&/a&&br&代码&a href=&///?target=https%3A///waylife/DemoCollections/tree/master/ViewDebugHelper& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DemoCollections/ViewDebugHelper at master · waylife/DemoCollections · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&首页com.netease.cloudmusic.activity.MainActivity&br&&img src=&/d951be1f25ed_b.png& data-rawwidth=&1075& data-rawheight=&551& class=&origin_image zh-lightbox-thumb& width=&1075& data-original=&/d951be1f25ed_r.png&&&br&歌单com.netease.cloudmusic.activity.PlayListActivity&br&&img src=&/c79fac806abe35a6c01f5_b.png& data-rawwidth=&1072& data-rawheight=&417& class=&origin_image zh-lightbox-thumb& width=&1072& data-original=&/c79fac806abe35a6c01f5_r.png&&&br&排行榜com.netease.cloudmusic.activity.UserAndProgramBillboardActivity&br&&img src=&/48cd7d21c3c39d561c21bb0fd70b6cfd_b.png& data-rawwidth=&1074& data-rawheight=&524& class=&origin_image zh-lightbox-thumb& width=&1074& data-original=&/48cd7d21c3c39d561c21bb0fd70b6cfd_r.png&&&br&&br&那有没有可能是WindowManager呢,比如360的悬浮窗就是用它实现的,来看下。&br&页面结构是这样的,主页面为例,还是使用Android Device Monitor&br&在里面有显示节点信息,那就不是WindowManager了。&br&&img src=&/634e3fdb55618bfbab1749d_b.png& data-rawwidth=&1375& data-rawheight=&817& class=&origin_image zh-lightbox-thumb& width=&1375& data-original=&/634e3fdb55618bfbab1749d_r.png&&也就是说基本可以断定是Activity了。&br&至于系统性能,这个还好。&br&&br&那为什么用Activity呢?&br&通过Jadx反编译,看下activity声明。&br&或许只是网易的开发同学比较偏好这种方式吧。&br&&img src=&/8f35e67b630_b.png& data-rawwidth=&1448& data-rawheight=&868& class=&origin_image zh-lightbox-thumb& width=&1448& data-original=&/8f35e67b630_r.png&&
先说结果,activity实现从实现上考虑,我也觉得使用Fragment会更好一些,只要在Container Activity注册广播监听播放状态就行了。而都用Activity的话,需要封装BaseActivity在OnResume注册监听、在onPause取消监听,然后界面也每个Activity都会有一个状…
来自子话题:
不邀自来,前面的几位说的都很好了。&br&&br&我就在如何坚持自学Android这方面提一点个人经验,能坚持下来真要感谢一个&b&学妹&/b&。&br&&br&我跟目前排名第一的Jager一样,是魔都大四的机械狗,而且我们在一个机械相关的公司一起实习过。这是何等的缘(ji)分(qing)\(≧▽≦)/。&br&&br&&br&接触Android开发的时候是在大三下,也就是2014年5月。&br&&br&那时我跟题主一样,对如何学习Android开发一头雾水,然后就在去年的这个时候,在知乎上提了这个问题&br&&a href=&/question/& class=&internal&&现在的Android工程师都是怎样学会制作Android软件的,主要是靠自学还是通过接受正规的教育? - 学习&/a&&br&&br&之后经过一段时间的摸索以及阅读,我把前辈们的学习经验和公司的工作要求进行了初步的归纳,算是明确一个前进的方向,在这里抛砖引玉一下。&br&&br&&br&&p&通过网上查资料,android应用开发大致有三个层次。&/p&&br&&p&一、初级。1. 拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得.2. 掌握Android UI控件、Android Java层API相关使用.精通xml、json解析,做过socket c/s端的程序,了解http协议。&/p&&br&&p&二、中级。1. 熟练掌握NDK JNI方式的开发,对Android framework十分了解.2. 移植一些开源项目,比如FFmpeg、Mplayer到Android上运行.迈向高级,熟悉android开源代码的结构,中间件下层的库,比如webkit、opencore、opengl.&/p&&br&&br&&p&三、高级。1. 熟练的Linux驱动开发,精通Linux内核结构.2. 掌握Android移植,比如常见的TI OMAP、Qualcomm MSM的硬件移植.迈向顶级,发现Android系统中的漏洞。&/p&&br&&br&&p&
现在公司对Android工程师的大致要求。&br&&/p&&br&&p&1.熟练掌握android的各种UI布局、UI控件,熟练自定义UI控件;&br&&/p&&br&&p&2.独立进行Android应用功能的设计、开发、调试、发布;&br&&/p&&br&&p&3.熟练掌握JAVA编程和Eclipse集成开发环境与Android SDK/NDK或者是Android Studio开发环境;&/p&&br&&br&4.了解常用数据结构与算法,熟悉TCP/IP、HTTP,具备扎实java,C/C++开发基础; &br&&br&5.熟悉android系统架构及相关技术和API的调动;理解设计模式和常见的开发框架;&br&&br&6.具有多线程、数据库、网络编程及调用底层JNI编码能力;&br&&br&7.对Android底层接口有深入地了解、对手机软件性能优化、内存优化、安全等有一定了解;&br&&br&&br&以我经历过的几次面试来看,&b&掌握初级的内容&/b&,&b&满足公司的前四条要求&/b&基本上就能找到工作了。&br&&br&&br&&br&方向找到了,接下来就是坚持去做了。不做不知道,刚一接触真是有点焦头烂额。(连java都没接触过。。。)&br&&br&&br&刚开始学的两天因为有一种想学好的冲劲,所以就抱着一本Android开发的书,埋头在图书馆看了一个周末,把Eclipse的开发环境搭好了。&br&&br&第三天勉强看了一点,第四天就完全不想看了。&br&&br&我心想这样不行,再这样下去就要半途而废了。&br&&br&&br&就在这个时候,学妹出现了。&br&&br&那个学妹在我发的自学android的状态下回复了我,说我好厉害(厉害个鬼。。。)&br&&br&我念头一动,想到书里有制作短信软件的一段代码,&br&&br&“ 如果我给&b&学妹&/b&做个&b&特制&/b&的短信软件一定很&b&有趣&/b&吧”。&br&&br&(论防火防盗防学长的重要性)&br&&br&抱着这个念头,我开始充满干劲的看书写代码了。&br&&br&正所谓写(zhao)码(zhe)(chao)无岁月,作为一名纯正的菜鸟,我用了6个小时才完成了那个特(jian)制(lou)的短信软件,从晚上8点一直弄到凌晨2点。&br&&br&&br&&br&第二天,当我把短信软件安装包发给学妹的时候,看到她欣喜的表情(单纯的文科妹子。。),&br&我感到无比的满足。&br&&br&&br&汲取这次的经验,我总算摸索出一条适合我的学习之路。&br&&br&&br&&br&&br&&br&&br&不要想歪,勾搭学妹之类的事怎么能一直做下去。(毕竟我是个直(zhi)男(nan))&br&&br&&br&&br&从这次的事情中,我发现做一个自己觉得&b&有价值的应用&/b&,能让学习的动力达到&b&MAX&/b&,无论有多少困难,都能去克服。&br&&br&&br&而且,我相信那句话——&b&盯着手上的沙粒是看不见面前恢弘无比的城堡的&/b&。&br&&br&一直看着某一个技术点,看着某个环节,只会让人感觉到无比的沮丧,因为技术的细节是看不完的。&br&&br&相反的做法是直接高屋建瓴的看清楚整个应用架构,然后用一个个技术点去把它搭起来,去实现它,就像搭积木那样,遇到不懂的东西自然就有动力去弄懂它了。&br&&br&&br&&b&毕竟,看的清的目标才能全力以赴的完成。&/b&&br&&br&&br&&br&做有价值的应用——&被人肯定——&外驱力&br&&br&做一个完整的应用——&激发完成欲——&内驱力&br&&br&&br&&br&&b&在外驱力与内驱力两驾马车共同作用之下&/b&,自学也就没那么难了。&br&&br&&br&&br&&br&最后,放上学习过程中做的两个APP截图。&( ̄︶ ̄)&&br&&br&&br&&br&华师贴吧版2048,在2048很火的那段时间做的,&br&用华师吧同(mei)学(zi)的头像代替数字来制作的游戏。&br&看头像就知道是同(mei)学(zi)。(* &???)?――◎&br&&img src=&/a255ab581d_b.jpg& data-rawwidth=&480& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/a255ab581d_r.jpg&&&br&&br&&br&&br&&br&&br&&br&济事通,准备打造成同济的一个信息平台,现在还在开发中。&br&&br&&img src=&/931a775f46b9f2d2e3cf2_b.jpg& data-rawwidth=&480& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/931a775f46b9f2d2e3cf2_r.jpg&&&br&&br&&br&&br&&br&在github上淘各种有趣的开源代码也是非常有趣的o( ̄▽ ̄)d,感觉比淘宝好玩多了,我试了很多种的特效,觉得Android开发真的是件非常非常有意思的事。当然开源的特效虽好,基本的技术还是要掌握好。&br&&br&&img src=&/cbe39e57c5b157cf46ab94e5f79a25e0_b.jpg& data-rawwidth=&480& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/cbe39e57c5b157cf46ab94e5f79a25e0_r.jpg&&滚轮是用AndroidWheel做的,&br&&a href=&///?target=https%3A///p/android-wheel/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&android-wheel - Android Picker widget&i class=&icon-external&&&/i&&/a&&br&&br&查询按钮是用circular-progress-button做的&br&&a href=&///?target=https%3A///chrisbanes/Android-PullToRefresh& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chrisbanes/Android-PullToRefresh · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&&br&&br&&br&&img src=&/2bd7aeff4a1befbc59acd74d1e27fef0_b.jpg& data-rawwidth=&480& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/2bd7aeff4a1befbc59acd74d1e27fef0_r.jpg&&&br&折线图用achartengine完成&br&&a href=&///?target=https%3A///p/achartengine/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&achartengine - Charting library for Android&i class=&icon-external&&&/i&&/a&&br&&br&&br&&br&&br&&br&&br&&b&找到其中的乐趣,自学就不难了&/b&,&b&用心投入,三个月基本能找到工作&/b&,祝楼主顺利。:-P
不邀自来,前面的几位说的都很好了。我就在如何坚持自学Android这方面提一点个人经验,能坚持下来真要感谢一个学妹。我跟目前排名第一的Jager一样,是魔都大四的机械狗,而且我们在一个机械相关的公司一起实习过。这是何等的缘(ji)分(qing)\(≧▽≦)/。接触…
来自子话题:
不必说这肯定就是后门,要知道就连苹果都不会直接移除已下架App,只是不让你再次安装而已,话说YunOS有必要这么积极的响应广电吗?广电好像也只是说新出厂的盒子如何如何没有要求厂商们移除已售盒子里的现有应用吧?难道YunOS要和广电深度合作一起搞TVOS?&br&&br&推荐一个答案:&a href=&/question//answer/& class=&internal&&如何看待阿里云 OS 封杀直播软件? - 万户侯的回答&/a&&br&感觉最近国内厂商最近频频作死,小米MIUI疯狂推送,百度卖贴吧卖节操,阿里的YunOS也是不务正业,就不能还消费者一个清静,想想其他赚钱方法吗?&br&果然还是没有竞争的情况下就会开始作死?真希望有国外或国内其他挑战者出现,这些大企业只有面临威胁的时候,他们的神经网络才会开始工作,聆听消费者的需求。
不必说这肯定就是后门,要知道就连苹果都不会直接移除已下架App,只是不让你再次安装而已,话说YunOS有必要这么积极的响应广电吗?广电好像也只是说新出厂的盒子如何如何没有要求厂商们移除已售盒子里的现有应用吧?难道YunOS要和广电深度合作一起搞TVOS?…
来自子话题:
这是自嘲。&br&&br&如果是外行整天叫程序员码农,轻则视为白痴,重则电脑莫名故障。&br&&br&&br&程序猿,产品狗,这些都是自嘲,外行人叫不得。&br&&br&&br&&br&程序猿从来都是生命不息,自黑不止。你看到黑程序猿的,都是程序猿自己,哪里轮得到外行人来黑。
这是自嘲。如果是外行整天叫程序员码农,轻则视为白痴,重则电脑莫名故障。程序猿,产品狗,这些都是自嘲,外行人叫不得。程序猿从来都是生命不息,自黑不止。你看到黑程序猿的,都是程序猿自己,哪里轮得到外行人来黑。
来自子话题:
完整项目的话推荐以下三个:&br&Google I/O Android App:&br&Google 每年的 Android 范例 App,必备参考,东西比较多,不过看了收获会很大。&br&Github repo: &a href=&///?target=https%3A///google/iosched& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/iosched · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&u2020:&br&Jake Wharton 所写的一个纯粹的示例项目,包含了依赖注入,视图注入,网络图片异步加载和缓存,访问 RESTful 服务,日志,视图 3D 层级调试,以及相关的 Mock 测试。&br&包含有对于 dagger, butterknife, picasso, retrofit, scalpel, timber 等开源项目的使用。&br&Github repo: &a href=&///?target=https%3A///JakeWharton/u2020& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JakeWharton/u2020 · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&Philm:&br&Chris Banes 的开源项目,应用内容是电影介绍,同样涉及到了依赖注入,MVC,ORM,项目层次非常清晰。&br&Github repo: &a href=&///?target=https%3A///chrisbanes/philm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chrisbanes/philm · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&至于更多的开源Android项目,到 &a href=&///?target=https%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
完整项目的话推荐以下三个:Google I/O Android App:Google 每年的 Android 范例 App,必备参考,东西比较多,不过看了收获会很大。Github repo: u2020:Jake Wharton 所写的一个纯粹的示例项目,包含了依赖注入,视图注入,网络图…
来自子话题:
作为一个GUI开发专家,我来告诉你真相:这个app因为偷懒,把本来应该设置的“让文字控件右对齐到容器”,改成了“让文字控件里面的文字右对齐到文字控件”。这种做法显然是错误的。当然原因很简单,就是因为程序员烂,连个小小的layout都不知道要怎么做,只好随便搞一搞。真是太劣质了。
作为一个GUI开发专家,我来告诉你真相:这个app因为偷懒,把本来应该设置的“让文字控件右对齐到容器”,改成了“让文字控件里面的文字右对齐到文字控件”。这种做法显然是错误的。当然原因很简单,就是因为程序员烂,连个小小的layout都不知道要怎么做,只…
来自子话题:
&p&某些科技公司竟然告诉别人只有花钱才能搞定马赛克,真是对不起自己,接下来,萌小助带你解开这一惊天大咪咪!&/p&&br&&p&1、安装PProxy&/p&&p&&a href=&///?target=http%3A//7xqi2y.dl1.z0./pproxy_0.4.5_linux_.tar.gz& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&7xqi2y.dl1.z0.&/span&&span class=&invisible&&/pproxy_0.4.5_linux_.tar.gz&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&///?target=http%3A//7xqi2y.dl1.z0./pproxy_0.4.5_windows_.zip& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&7xqi2y.dl1.z0.&/span&&span class=&invisible&&/pproxy_0.4.5_windows_.zip&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&2、设置并且启动&/p&&p&windows用户运行start.bat就可以啦!&/p&&p&linux用户运行pproxy_control.sh start&/p&&br&&p&3、管理界面&/p&&p&本机访问&a href=&///?target=http%3A//localhost%3A8080& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&localhost:8080&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&4、设置代理&/p&&p&连接手机到电脑同一Wifi,然后代理设置为:电脑IP:8080&/p&&p&iPhone在通用-WIFI里面,最下面&/p&&img src=&/84c1bdca2c8870cfdc0e7d4_b.jpg& data-rawwidth=&640& data-rawheight=&1136& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/84c1bdca2c8870cfdc0e7d4_r.jpg&&&br&&br&&br&&p&5、打开微信刷朋友圈吧,然后你会看到如下的情况&/p&&img src=&/77c46bb431f1a48101bf_b.png& data-rawwidth=&640& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/77c46bb431f1a48101bf_r.png&&&br&&img src=&/750c4e570dd2cc5aad0afbe54d47feea_b.png& data-rawwidth=&640& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/750c4e570dd2cc5aad0afbe54d47feea_r.png&&&br&&p&立马下马!&/p&
某些科技公司竟然告诉别人只有花钱才能搞定马赛克,真是对不起自己,接下来,萌小助带你解开这一惊天大咪咪!1、安装PProxy2、设置并且启动windows用户运行start.bat就可以啦!linux用户运行pproxy_control.sh sta…
来自子话题:
现在开发一个新App,立马上 ButterKnife + OkHttp + Volley + Gson + Fresco + android-common + 某ORM + LeakCanary..
&br&简直一整套的View注解、网络请求、图片加载、工具类、数据存储、性能检测等等的基础框架。
&br&&br&UI 方面,Support Lib + Design Lib + 各种开源 View 控件。
&br&&br&一款又一款App就出来了。 &br&&br&…
&br&以上是我的个人套路,一个依赖开源项目的菜鸟(逃&br&- - - - - - - - - -
&br& 再次更新&br&刚好过了3个月,有了一些新的爱好,再次来更新下这个答案。 &br&其中 &b&Volley&/b& 不再使用,该用 &b&Retrofit 2&/b& 代替..&br&增加一个 &b&Otto &/b&事件总线框架..&br&如果不是主打图片的应用,Fresco 应排除,安装包太大,该用 &b&Piccaso &/b&或 &b&Glide&/b&..&br&android-common 不再完整使用,按需求抽取其中的 utils 类..&br&ORM 个人偏爱 &b&OrmLite&/b&..&br&业余时间正在开发一个基于 MVP 模式,使用 Square 全家桶 + Dagger 2 的 APP,开发完成后将会开源出来互相交流..(最近在公司赶新项目,业余时间太少了T.T)&br&&br&- - - - - - - - - - &br& 再次更新&br&卧槽!4个月过去了,没想到我已经 996 工作4个月了 T.T&br&目前对这个套路有了新的看法,&b&Retrofit 2&/b& 要搭配上 &b&RxJava &/b&那就是如虎添翼了。&br&现在弄的新项目,我都是把&br&&div class=&highlight&&&pre&&code class=&language-groovy&&
&span class=&n&&compile&/span& &span class=&s1&&'com.jakewharton:butterknife:7.0.1'&/span&
&span class=&n&&compile&/span& &span class=&s1&&'com.squareup:otto:1.3.8'&/span&
&span class=&n&&compile&/span& &span class=&s1&&'com.squareup.retrofit2:retrofit:2.0.0'&/span&
&span class=&c1&&// 会引用 okHttp&/span&
&span class=&n&&compile&/span& &span class=&s1&&'com.squareup.retrofit2:converter-gson:2.0.0'&/span&
&span class=&c1&&// 会引用 Gson&/span&
&span class=&n&&compile&/span& &span class=&s1&&'com.squareup.retrofit2:adapter-rxjava:2.0.0'&/span&
&span class=&c1&&// 会引用 RxJava&/span&
&span class=&n&&compile&/span& &span class=&s1&&'io.reactivex:rxandroid:1.1.0'&/span&
&span class=&n&&compile&/span& &span class=&s1&&'com.github.bumptech.glide:glide:3.7.0'&/span&
&/code&&/pre&&/div&往 build.gradle 一粘贴,一种老司机要开车的感觉 23333...&br&另外对于 ORM,目前有个 SQLite 的替代方案 [&b&Realm]&/b&(&a href=&///?target=https%3A//realm.io/docs/java/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java Docs - Realm is a mobile database: a replacement for SQLite & Core Data&i class=&icon-external&&&/i&&/a&),感觉值得尝试.&br&&br&扯点题外的,快速开发,调试工具一定要到位,这里推荐两个:&br&1、[&b&Postman](&/b&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Postman | Supercharge your API workflow&i class=&icon-external&&&/i&&/a&)&br&这个 API 调试工具,主要是用于你拿到后台给的 API 文档后进行模拟请求时用的,可以说是用于撸代码之前。&br&2、[&b&Stetho](&/b&&a href=&///?target=http%3A//facebook.github.io/stetho/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stetho&i class=&icon-external&&&/i&&/a&)&br&这个应该很多人都推荐过,强大的调试功能具体可以点击去看,这个我主要是用来对接完 API,撸完代码之后的调试,可以很清楚的看到客户端与服务器来往的数据。(注意:开了这调试工具会很卡,调完就关吧)
现在开发一个新App,立马上 ButterKnife + OkHttp + Volley + Gson + Fresco + android-common + 某ORM + LeakCanary.. 简直一整套的View注解、网络请求、图片加载、工具类、数据存储、性能检测等等的基础框架。 UI 方面,Support Lib + Design Lib + 各种…
来自子话题:
谢邀,很早前就想把零碎的思绪整理下,一直比较忙就拖到了这个问题的邀请,然后拖到了今天。&br&&br&这篇文章首发在微信公众号 codeKK
&a href=&///?target=http%3A//mp./s%3F__biz%3DMzAxNjI3MDkzOQ%3D%3D%26mid%3Didx%3D1%26sn%3Deee982c501e6%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&移动端网络优化&i class=&icon-external&&&/i&&/a&&br&&br&&p&一个网络请求可以简单分为连接服务器 -& 获取数据两个部分。&br&其中连接服务器前还包括 DNS 解析的过程;获取数据后可能会对数据进行缓存。&/p&&br&&b&一、连接服务器优化策略&/b&&p&&strong&1. 不用域名,用 IP 直连&/strong&&br&省去 DNS 解析过程,DNS 全名 Domain Name System,解析意指根据域名得到其对应的 IP 地址。 如 &a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&codeKK 开源项目源码分析&i class=&icon-external&&&/i&&/a& 的域名解析结果就是 104.236.147.76。&/p&&br&&p&首次域名解析一般需要几百毫秒,可通过直接向 IP 而非域名请求,节省掉这部分时间,同时可以预防域名劫持等带来的风险。&/p&&br&&p&当然为了安全和扩展考虑,这个 IP 可能是一个动态更新的 IP 列表,并在 IP 不可用情况下通过域名访问。&/p&&br&&p&&strong&2. 服务器合理部署&/strong&&br&服务器多运营商多地部署,一般至少含三大运营商、南中北三地部署。&/p&&br&&p&配合上面说到的动态 IP 列表,支持优先级,每次根据地域、网络类型等选择最优的服务器 IP 进行连接。&/p&&br&&p&对于服务器端还可以调优服务器的 TCP 拥塞窗口大小、重传超时时间(RTO)、最大传输单元(MTU)等。&/p&&br&&b&二、获取数据优化策略&/b&&p&&strong&1. 连接复用&/strong&&br&节省连接建立时间,如开启 keep-alive。&/p&&br&&p&Http 1.1 默认启动了 keep-alive。对于 Android 来说默认情况下 HttpURLConnection 和 HttpClient 都开启了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影响连接池的 Bug,具体可见:&a href=&///?target=http%3A///android/android-http-api-compare/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android HttpURLConnection 及 HttpClient 选择&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&strong&2. 请求合并&/strong&&br&即将多个请求合并为一个进行请求,比较常见的就是网页中的 CSS Image Sprites。 如果某个页面内请求过多,也可以考虑做一定的请求合并。&/p&&br&&p&&strong&3. 减小请求数据大小&/strong&&br&(1) 对于 POST 请求,Body 可以做 Gzip 压缩,如日志。&/p&&br&&p&(2) 对请求头进行压缩&br&这个 Http 1.1 不支持,SPDY 及 Http 2.0 支持。 Http 1.1 可以通过服务端对前一个请求的请求头进行缓存,后面相同请求头用 md5 之类的 id 来表示即可。&/p&&br&&p&&strong&4. CDN 缓存静态资源&/strong&&br&缓存常见的图片、JS、CSS 等静态资源。&/p&&br&&p&&strong&5. 减小返回数据大小&/strong&&br&(1) 压缩&br&一般 API 数据使用 Gzip 压缩,下图是之前测试的 Gzip 压缩前后对比图。 &/p&&br&&p&(2) 精简数据格式&br&如 JSON 代替 XML,WebP 代替其他图片格式。关注公众号 codekk,回复 20 查看关于 WebP 的介绍。&/p&&br&&p&(3) 对于不同的设备不同网络返回不同的内容 如不同分辨率图片大小。&/p&&br&&p&(4) 增量更新&br&需要数据更新时,可考虑增量更新。如常见的服务端进行 bsdiff,客户端进行 bspatch。&/p&&br&&p&(5) 大文件下载&br&支持断点续传,并缓存 Http Resonse 的 ETag 标识,下次请求时带上,从而确定是否数据改变过,未改变则直接返回 304。&/p&&br&&p&&strong&6. 数据缓存&/strong&&br&缓存获取到的数据,在一定的有效时间内再次请求可以直接从缓存读取数据。&/p&&br&&p&关于 Http 缓存规则 Grumoon 在 &a href=&///?target=http%3A///blogs/detail/54cfab086c42& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Volley 源码解析&i class=&icon-external&&&/i&&/a&最后杂谈中有详细介绍。&/p&&br&&b&三、其他优化手段&/b&&p&这类优化方式在&a href=&///?target=http%3A///android/performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化系列总篇&i class=&icon-external&&&/i&&/a&中已经有过完整介绍&br&&strong&1. 预取&/strong&&br&包括预连接、预取数据。&/p&&br&&p&&strong&2. 分优先级、延迟部分请求&/strong&&br&将不重要的请求延迟,这样既可以削峰减少并发、又可以和后面类似的请求做合并。&/p&&br&&p&&strong&3. 多连接&/strong&&br&对于较大文件,如大图片、文件下载可考虑多连接。 需要控制请求的最大并发量,毕竟移动端网络受限。&/p&&br&&b&四、监控&/b&&p&优化需要通过数据对比才能看出效果,所以监控系统必不可少,通过前后端的数据监控确定调优效果。&/p&&br&&p&注:服务器部署方面的优化有参考手 Q 和 QZone 去年的技术分享。&/p&&br&&p&本文为性能优化系列第四篇,目前性能调优专题已完成以下部分:&br&&a href=&///?target=http%3A///android/performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化总纲——性能问题及性能调优方式&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/mobile-performance-optimization& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化第四篇——移动网络优化&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/java-android-performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化第三篇——代码优化&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/layout-performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化第二篇——布局优化&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/database-performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化第一篇——数据库性能优化&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/android%25e6%%25e8%2583%25bd%25e8%25b0%%25bc%%25b7%25a5%25e5%traceview%25e4%25bb%258b%25e7%25bb%258d/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android 性能调优工具 TraceView&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/android%25e6%%25e8%2583%25bd%25e8%25b0%%25bc%2598/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能优化实例&i class=&icon-external&&&/i&&/a&&/p&
谢邀,很早前就想把零碎的思绪整理下,一直比较忙就拖到了这个问题的邀请,然后拖到了今天。这篇文章首发在微信公众号 codeKK 一个网络请求可以简单分为连接服务器 -& 获取数据两个部分。其中连接服务器前还包括 DNS 解析的过程;获取数据后…
来自子话题:
反正我经常上的网站有以下几个:&br&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&V2EX&i class=&icon-external&&&/i&&/a&&br&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stack Overflow&i class=&icon-external&&&/i&&/a&&br&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lifehacker - Tips and downloads for getting things done&i class=&icon-external&&&/i&&/a&&br&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaScript Weekly: A Free, Weekly Email Newsletter&i class=&icon-external&&&/i&&/a&(实际上是邮件列表)&br&&br&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hacker News&i class=&icon-external&&&/i&&/a&&br&&br&----------------------&br&&br&想不到有这么多人点赞,好吧,那我贡献多几个:&br&&br&&a href=&///?target=http%3A//ruby-china.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ruby-china.org/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&(告诉你,这里很多牛B的人)&br&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&(如果你做iOS开发,能够在这里学习到很多东西)&br&&br&&a href=&///?target=http%3A//cocoapods.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&cocoapods.org/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&(开发iOS的也应该知道了)&br&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&(前端乱炖,这个是芋头搞的,挺好玩的,主要是上面貌似挺多妹子)&br&&br&好吧,要是我想到了,我会追加更多精品的网站上去的。&br&&br&----------------------&br&&br&看到tiny关注了这个问题,想起了,似乎挺多iOS开发者冲着tiny去了他的社区&br&&br&&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& (我们程序员,你懂的...)
反正我经常上的网站有以下几个:(实际上是邮件列表)----------------------想不到有这么…
来自子话题:
完全可以,而且在淘宝、微信等 App 已经实现并应用,主要利用 Java ClassLoader 的原理,对于 Android 来说是 DexClassLoader,如下&br&&div class=&highlight&&&pre&&code class=&language-text&&DexClassLoader pluginClassLoader = new DexClassLoader(dexPath, optimizedDirectory, libraryPath, parentClassLoader);
&/code&&/pre&&/div&可动态加载的内容包括 apk、dex、jar 等&br&&br&我也利用这个原理及开源项目实现了一个版本,并且整理了 Android 插件化的作用、概念以及不错的资料(包括开源项目)和解决方案。&br&&br&其中包括 65535 问题,Android 插件化、Android 组件化、Android 动态加载、Android 动态升级;介绍 DexClassLoader 和 PathClassLoader 的区别;如何解决生命周期管理、资源访问问题,如何消除公共依赖&br&&br&详细可见我的博客:&a href=&///?target=http%3A///android/android-plugin/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&利用 DexClassLoader 实现 Android 插件化,从而达到动态加载&i class=&icon-external&&&/i&&/a&&br&&br&&img src=&/a12b820f0e03ef4ee6a7_b.jpg& data-rawwidth=&1358& data-rawheight=&2308& class=&origin_image zh-lightbox-thumb& width=&1358& data-original=&/a12b820f0e03ef4ee6a7_r.jpg&&
完全可以,而且在淘宝、微信等 App 已经实现并应用,主要利用 Java ClassLoader 的原理,对于 Android 来说是 DexClassLoader,如下DexClassLoader pluginClassLoader = new DexClassLoader(dexPath, optimizedDirectory, libraryPath, parentClassLoader);…
来自子话题:
你错了,这不是Holo风格。这是因为iOS扁平化了。。。
你错了,这不是Holo风格。这是因为iOS扁平化了。。。
来自子话题:
15年接触的Android开发者中的应届生,除了公司的同学之外,让人明显感觉出能力非常强的应该是 &a data-hash=&55afbfa86f4b8299adb222e5& href=&///people/55afbfa86f4b8299adb222e5& class=&member_mention& data-editable=&true& data-title=&@陈启超& data-tip=&p$b$55afbfa86f4b8299adb222e5&&@陈启超&/a& 和 &a data-hash=&9ac0baecc8cebd48f457& href=&///people/9ac0baecc8cebd48f457& class=&member_mention& data-editable=&true& data-title=&@潇涧& data-tip=&p$b$9ac0baecc8cebd48f457&&@潇涧&/a&,你问他们能力有多强?反正比我毕业的时候强多了。&br&跟两位都有过交流,跟工作相关的部分,过程很高效,他们需要的并不是你帮助他们选择人生的道路,相反的他们已经非常明确的知道自己要走的路,希望你的经验能帮助他们走的更加顺利。&br&技术方面不需要说太多,两位的技术都非常扎实,启超在我们这面试过,几位面试官的评价都很不错,实际能力要强于简历和博客上我们看到的内容。技术之外呢?两位的共同点在于比起一般应届生,他们具有&b&更宽广的眼界,强大的学习能力,超强的执行力和清晰的自身定位&/b&。&br&举个很小的例子,启超对于自己在技术上的长处和短板看的很透彻,每次面试之后会把这次的面试过程Review,查漏补缺,做CheckList,对于技术上的不足进行有针对性的学习,包括当时我建议他一定要练白板,他也非常认真的去做了。这虽然是一件很小的事情,但很能反应出个人的综合素质。家威同学关于主席书的读书笔记我也在看,详尽到令人发指,光从博客中体现出的学习能力和执行力,已经超过了绝大部分人。&br&其实题主的问题应该也包含怎么变的优秀。如果想变的优秀那就去看那些优秀的人在学什么,做什么,想尽一切办法和他们交流;多出去看看这个世界,然后把自己逼到往死里学。其实我在每个团队都不是最强的那一个,现在身边比我优秀的同事也遍地都是,而我能做的就只有一直在向他们学习,一直去努力,并且从来没有放弃过。&br&&br&最后总结一下我的观点:&br&&b&优秀的Android工程师,首先是一个优秀的人。&/b&&br&&br&PS:&br&我现在的回答基本不讨论很基础的问题,一则这类问题在各个论坛包括知乎上已经讨论的太多,随便搜一下都有大把;二则像英语四级要不要过,贪心算法要不要学之类,并没有讨论的价值。&br&&br&贴一下家威找工作的总结,希望对题主有帮助:&br&&a href=&///?target=http%3A//hujiaweibujidao.github.io/blog//a-li-bao-bao-de-man-man-qiu-zhi-lu/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Job Hunting | HujiaweiBujidao&i class=&icon-external&&&/i&&/a&
15年接触的Android开发者中的应届生,除了公司的同学之外,让人明显感觉出能力非常强的应该是
和 ,你问他们能力有多强?反正比我毕业的时候强多了。跟两位都有过交流,跟工作相关的部分,过程很高效,他们需要的并不是你帮助他们选择人生的道…
来自子话题:
今天上来竟然看到题主修改了问题描述……我昨天回答的时候看到的问题描述是这样的:&br&&blockquote& 为什么这么一个小公司却这么强呢?&/blockquote&Square 真的不是一家小公司……专注在移动支付,虽然最近几个季度的表现不佳(大概与盈利方式有关),但估值曾经一度到了 60 亿美刀,且瘦死的骆驼比马大,不论如何都不应该说这是一家「小公司」。会觉得这是一家「默默无闻的小公司」,纯粹是因为他们的业务没有延伸到中国而已,题主没有感受到罢了。&br&&br&当然我同意题主说的「在开源方面如此强劲」的观点。就 Android 开发而言,感觉不论如何都会遇到他家的几个裤子。打开 GitHub trending,选择语言为 Java,会发现排名靠前的几个项目中总是会看到 Square 带头出品的裤子。主要是与 Android 相关的,如 okhttp,retrofit。而一些没有在 trending 上见到的,已经是传统好裤子的如 Picasso 等。我觉得会积极投身在开源事业上的原因,如同 Square 在 &a href=&///?target=http%3A//square.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Square Open Source&i class=&icon-external&&&/i&&/a& 上所写,应该是:&br&&blockquote&As a company built on open source, here are some of the internally-developed libraries we have contributed back to the community.&br&&/blockquote&我觉得这才是一家技术导向的公司应该追求的东西吧?受益于开源,然后尽可能地回报开源社区,实现整个开源社区互相促进的运转结构。&br&&br&BTW,我觉得另外一个原因是,他家有很聪明&勤奋的 Open source developer。&br&比如这位 Jake Wharton:&br&&img src=&/07fcb7eaf67a9abbd78f63cab250418a_b.png& data-rawwidth=&2306& data-rawheight=&1184& class=&origin_image zh-lightbox-thumb& width=&2306& data-original=&/07fcb7eaf67a9abbd78f63cab250418a_r.png&&&br&&br&每次点开他的 GitHub 主页,心中都会油然而生一种敬意。&br&&br&昨天我才刚在&a href=&///?target=https%3A///tutorial/bootstrapping-android-apps-open-source& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& | Courses&i class=&icon-external&&&/i&&/a& 看他做的 pre。左边的链接是他在一个技术分享会议上(大概是吧)做的演讲,列出了他做的几个裤子(九个老安卓,ActionBarSherlock 等),主要目的是鼓励开发者能利用好这些开源工具提升自己的工作效率,并且可能的话投身到开源事业中回馈给这个&b&曾让你受益的社区&/b&。可以看出来他跟 Square 之前那段话想表达的思想是一致的。&br&&br&当然我的内心 OS 都是:&br&“为什么会有人技术好颜值不低身材看起来也很 fit 而且还那么勤奋每天有那么多 contribution……”&br&比你聪明的人比你还努力。然后他还在一个崇尚开源的工作环境里。&br&&br&与之对应的,&b&有多少软件工程师,在自己日常的工作环境里,最后只成为了维护机器运转的螺丝钉,没有时间接触新技术,更别说分享了呢?&/b&从一个 Engineer 变成了名副其实的 Coder&b&。&/b&&br&&br&以上。我要抓紧时间学习了 :(
今天上来竟然看到题主修改了问题描述……我昨天回答的时候看到的问题描述是这样的: 为什么这么一个小公司却这么强呢?Square 真的不是一家小公司……专注在移动支付,虽然最近几个季度的表现不佳(大概与盈利方式有关),但估值曾经一度到了 60 亿美刀,且…
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 花呗当前分期额度不足 的文章

 

随机推荐