




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 在写第一个在写第一个 AndroidAndroid AppApp 时必须知道的时必须知道的 6 6 件事件事 我的第一个 app 是糟糕的 实际上 它太糟糕了 所以我把它从商店中移除 我甚至不再因我把它列在我的简历之中而烦恼 如果我在写它之前 知道一些 有关 Android 开发的事 那个 app 就不会那么糟糕 当你写你的第一个 Android app 时 这有一个列表你需要记着 这些经验教训 是我在写第一个 app 源码时 犯下的真实的错误 我将会在后面展示这些错误 记住这些事情能帮助你写一个让你感到有点自豪的 app 当然 如果你作为一个 Android 开发的学生正在做正确的工作 无论如何 不 久后你都有可能恨你写的 app 正如 codestandards 所说 如果你一年前码的 代码并不能让你感觉到不适 那你有可能没怎么学习 如果你是一个有经验的 Java 开发者 第 1 2 和第 5 条可能并不能让你感兴趣 另外的第 3 4 条可能展示你一些很酷的但你可能还不知道的东西 对对 ContextsContexts 不要有静态引用不要有静态引用 1 publicpublic classclass MainActivity extendsextends LocationManagingActivity implimpl ementsements ActionBar OnNavigationListener 2 GooglePlayServicesClient ConnectionCallbacks 3 GooglePlayServicesClient OnConnectionFailedListener 4 5 6 7 privateprivate staticstatic MeTrackerStore mMeTrackerStore 8 9 10 11 Override 12 protectedprotected voidvoid onCreate Bundle savedInstanceState 13 14 精品文档 2欢迎下载 15 mMeTrackerStore newnew MeTrackerStore thisthis 16 17 这可能看起来对任何人来说 都是一个不可能犯的错误 但并非这样 我就犯 过 我也看到其他人犯过这样的错误 并且我也看到很多人并不能在第一时间 指出为什么这是一个错误 不要这样做 它是一个 noob move 如果当这个 Activity 传递到它的构造函数里 MeTrackerStore 持有这个 Activity 的引用 那这个 Activity 将仍然不会被回收 除非这个静态变量被 重新赋值给另一个 Activity 这是因为 mMeTrackerStore 是静态的 静态变 量的内存是不会被回收的 直到程序里正在运行的进程停止 如果你发现自己 尝试这么做 那么你的代码可能有一些严重的错误 寻找帮助的话 可以看看 Google s Udacity 里的课程 Android Development for Beginners 注意 技术上讲 你可以 hold 一个对 Context 的静态引用 但不会引起内存泄 漏 但我不会推荐你这么做 当心对那些你无法控制它的生命周期的对象进行隐式引用当心对那些你无法控制它的生命周期的对象进行隐式引用 1 publicpublic classclass DefineGeofenceFragment extendsextends Fragment 2 publicpublic classclass GetLatAndLongAndUpdateMapCameraAsyncTask extendsextends A syncTask 3 4 Override 5 protectedprotected LatLng doInBackground String params 6 7 trytry 8 Here we make the http request for the place search suggestion s 9 httpResponse httpClient execute httpPost 10 HttpEntity entity httpResponse getEntity 11 inputStream entity getContent 12 13 精品文档 3欢迎下载 14 15 16 17 18 这段代码有很多问题 但我将关注其中的一个 在 Java 中 非静态的内部类对 包含它的类对象有一个隐式的引用 在这个例子中 任何 GetLatAndLongAndUpdateMapCameraAsyncTask 对象都将有 个 DefineGeofenceFragment 对象的引用 匿名类也是如此 它会对包含它的类 对象有个隐式的引用 这个 GetLatAndLongAndUpdateMapCameraAsyncTask 对象对 Fragment 对象有个 隐式的的引用 一个我们无法控制它生命周期的对象 Android SDK 负责适当 的创建和销毁 Fragment 对象 如果因为 GetLatAndLongAndUpdateMapCameraAsyncTask 对象正在执行所以不能被回收的 话 那它持有对象也无法被回收 这里有一个很棒的 Google IO 视频解释为什么这种事会发生 让让 AndroidAndroid StudioStudio 为你工作为你工作 1 publicpublic ViewPager getmViewPager 2 returnreturn mViewPager 3 这个片段是我使用 Generate Getter 代码补全时 Android Studio 为我生 成的 这个 getter 方法对这个实例变量保持了 m 前缀 这并不理想 另外 你一定想知道为毛实例变量神明的时候要带个 m 前缀 这个 m 常 常被约定作为实例变量的前缀 它代表了 member 不论你是否认为 m 作为你实例变量的前缀是一个好主意 这里有一个经验 Android Studio 可以帮你按照你养成的习惯去编写代码 比如说 你可以使用 Android Studio 中的代码风格框去让 Android Studio 自动的加上 m 到你的 实例变量并且自动移除 m 当它生成 getters setters 和构造参数时 精品文档 4欢迎下载 Android Studio 可以做很多事情 学习快捷键和活动模版会是一个好的开始 方法应该只做一件事方法应该只做一件事 有一个方法我写超过了 1000 行 这样的方法很难读懂 修改和重用 试着写仅 仅做一件事的方法 典型的 这意味着你应该怀疑那些你写超过 20 行的代码 这里你可以招募 Android Studio 去帮助你指出有问题的方法 向那些比你更聪明 更有经验的人学习向那些比你更聪明 更有经验的人学习 精品文档 5欢迎下载 这好像挺起来不重要 但是这是我写第一个 app 时犯下的错误 当你正在写程序时 你将会犯错 其他的人已经犯过这样的错误了 向其他人 学习 如果你重复那些可以避免的错误 那你就是在浪费时间 读 Pragmatic Programmer 然后读 Effective Java 这两本书会帮助你避免犯 一些常见的错误 当你读完这两本书后 保持向聪明的人学习 使用库使用库 当你写一个 app 你可能会遇到那鞋前人已经解决了的问题 而且 大量的解 决办法都是开放的作为资源库 好好利用他们 在我的第一个 app 中 我写的功能已经被其他库所提供了 它们中的一些库来 自于标准的 java 中的一部分 另一些则是像 Retrofit 和 Picasso 这样的库 如果你不确定你要应该用什么库 你能做 3 件事 1 听 Google IO Fragmented podcast episode 2 订阅 Android Weekly 3 寻找解决类似问题的开源应用 你可能发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胸罩价值链管理办法
- 2025年中子、电子及Γ辐照装置合作协议书
- 装修商场维修管理办法
- 药品及处方管理办法
- 规范调整账户管理办法
- 专用公路维护管理办法
- 规范品牌使用管理办法
- 2025年海洋石油修井机项目合作计划书
- 街道社区经济管理办法
- 综采队创新管理办法
- 保险核保岗位招聘笔试题与参考答案(某世界500强集团)2025年
- 中建建筑工程竣工验收指南
- 新时代中小学教师职业行为十项准则
- 《品类管理》教材正文
- 初中数学教学经验分享
- 2024年新人教版部编一年级道德与法治教材解读
- 安全围栏检修方案
- 我的家乡课件中班
- 2024永磁外转子 EC 风机系统技术条件
- 建筑行业信息化管理与施工监控系统方案
- 高职高考英语词汇表
评论
0/150
提交评论