给Android程序猿的六个建议
假设你一年前写的代码 , 在如今看来你还感觉写的非常不错 , 那么说明你学习的不够多.
不要在Context中持有静态引用
public class MainActivity extends LocationManagingActivity implements ActionBar.OnNavigationListener,
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener {
//...
private static MeTrackerStore mMeTrackerStore;
//...
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
mMeTrackerStore = new MeTrackerStore(this);
}
}
这个毛病可能非常多人都会犯过 , 假设
MeTrackerStore通过构造持有activity的引用 , 那这个activity就永远不会被垃圾回收.(除非静态变量被又一次分配至不同的activity)这是由于
MeTrackerStore是静态的 , 而对于静态变量的存储, 当应用程序启动 , 不收集 , 知道退出该应用程序正在执行的进程 .注: 从技术层面来说 , 你能够持有一个静态应用的
application context, 这样不会造成内存泄露 , 但不建议这么做注意控制”隐性引用”对象的生命周期
public class DefineGeofenceFragment extends Fragment {
public class GetLatAndLongAndUpdateMapCameraAsyncTask extends AsyncTask<String, Void, LatLng> { @Override
protected LatLng doInBackground(String... params) {
//...
try {
//Here we make the http request for the place search suggestions
httpResponse = httpClient.execute(httpPost);
HttpEntity entity = httpResponse.getEntity();
inputStream = entity.getContent();
//..
}
}
}
}
这段代码有非常多问题 , 我们把终点放在隐式引用 . 在Java中 , 对于包括静态内部类的类 , 非静态内部类具有隐式引用.
本段代码中 , 对与外部类
DefineGeofenceFragment将持有一个GetLatAndLongAndUpdateMapCameraAsyncTask引用对与包括内部类的外部类来说 , 他们有一个隐含的引用包括匿名类的类的实例 , 该
GetLatAndLongAndUpdateMapCameraAsyncTask有一个隐含的引用片段Android Studio 让你更快捷, 更舒服
AS提供的快捷键和live templates,会让你写起代码飞快。眼下Android Studio已经能够支持NDK开发。日后会有越来越多的人喜欢Andriod Studio并使用它来开发。- 一个方法仅仅做一件事
有一个在我写这超过100行的类之中的一个的方法。这个方案难以阅读,改动和又一次使用。
试着写的方法仅仅能做一件事。通常情况下,这意味着你应该怀疑的是超过20行代码的方法。
在这里。你能够招募的Android Studio来帮助你发现问题的方法。
向比你有经验的人学习
这可能听起来微不足道。但它是一个错误,我做的时候,我写我的第一个应用程序。当你写一个应用程序。你会犯错误。
其它人已经取得了这些错误。
从这些人的了解。
你是在浪费你的时间。假设你反复别人的能够避免的错误。
我浪费了大量的时间在我的第一个应用程序使得我本来能够避免,假设我仅仅是花了一点时间。从经验丰富的软件开发者学习错误。
阅读程序猿修炼。然后阅读有效的Java。这两本书将帮助你避免我们作出开发新手常犯的错误。当你与那些书做。不停地寻找聪明的人学习的模范。
多使用第三方库
当你写一个应用时 , 你可能会遇到更聪明 , 更有经验的人已经攻克了你的需求或问题. Android 有非常多开源库 , 我们能够多利用他们。
在我的应用中 , 我常常使用第三方库提供的功能 , 比方 Retrofit 和 Picasso . 假设你不确定你须要哪种类型或功能的库 , 以下介绍一下比較流行的几款库:1. Google 广播 (http://fragmentedpodcast.com/episodes/9/) , 告诉你什么情况 使用什么库 , 比如 Dagger Retrofit Picasso 和 Mockito
2. 订阅Android周刊 . 他们会给你推送最新的第三方库或比較最新 , 近期比較流行的设计模式及功能.
3. 寻找开源码的应用 去解决相似你须要的功能或模块. 这个应用可能会用到你不知道的第三方库.
给Android程序猿的六个建议的更多相关文章
- 给Android程序员的六个建议
给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...
- 七个 Android 程序猿提高效率必备工具
Android 程序猿提高效率必备工具 0x00 Code tree for GitHub 这个 Chrome 浏览器插件.Github 作为最大同性交友网站,每天的工作几乎是从打开这个网站开始的.当 ...
- android 程序猿跳槽须要注意哪些?
我是一个工作3年多的android开发,因为公司和个人发展原因.打算跳槽! 这次跳槽又给我好好的上了一课!所以我自己反思总结了一下.然后整理出一下几点 程序猿打算跳槽的时候须要注意的几点. 一 先想好 ...
- Android程序猿学习路径
而一些工作,而不仅仅是通信毕业生,很多学生没有工作或熟练Android工作人员指导的情况下,,如何学习Android而提高Android更多关注的水平. 享: 1.Android知识 1.1.站点资源 ...
- Android程序猿必须警示的13个坑
Android开发中,犯错是难免的,不犯错是不正常的,但是犯了错以后,我们必须时刻谨记这些坑,避免再次被坑,下面小编整理了13个,日常工作中,比较常见且易犯的错误,分享给大家. 1.类的 ...
- Android程序猿自己动手制作.9.png图片
1:怎样制作9.png图片素材: 打开SDK工具文件夹下: draw9patch.zip 解压执行draw9patch.bat.有的直接搜索会有:draw9patch.bat. 双击执行后,例如以下 ...
- Android程序猿必掌握的sqlite数据库连表查询
SQL查询的基本原理:两种情况介绍. 第一. 单表查询:依据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的):然后依据SELECT的选择列选择对应的列进行返回终于结果. 第二 ...
- 程序猿怎样变身IT讲师
我以前写过一篇文章,"一张图道尽程序猿的出路",里面有一张图: 这张图随着"一张图道尽程序猿的出路"这篇文章,以前被伯乐在线.docin(豆丁网).IT面试.J ...
- CSDN日报20170401 ——《假设你还是“程序猿”,我劝你别创业!》
[程序人生]假设你还是"程序猿".我劝你别创业! 作者:北漂周 在IT这一行做得久了,会接触到无数让人哭笑不得的外行话. 「我们就差一个写代码的了」是当中典型的一种,之所以黑它.不 ...
随机推荐
- c# 网站发布
.net 网站发布简单步骤: 1.选择需要发布的网站,右击->发布 1)配置文件:可以任意新建文件配置名 2)连接: 发布方法选择系统文件:选择目标位置,任意新建一个位置即可. 3)设置:选择D ...
- 7——使用TextView实现跑马灯
首先给TextView添加一个单行限制: android:singleLine="true" - 解决方案一 更改TextView的一个属性: android:ellipsize= ...
- eclise -The method onClick(View) of type new View.OnClickListener(){} must override a superclass method
在做arcgis android开发的时候,突然遇到这种错误,The method onClick(View) of type new View.OnClickListener(){} must ov ...
- DbProviderFactories.GetFactory Oracle.ManagedDataAccess.Client
因为最近项目,要使用微软的EF框架不安装Oracle客户端的情况下,访问Oracle数据库.调用如下代码的时候会报错. System.Data.Common.DbProviderFactories.G ...
- table标签,认识网页上的表格
有时候我们需要在网页上展示一些数据,如某公司想在网页上展示公司的库存清单.如下表: 想在网页上展示上述表格效果可以使用以下代码: 创建表格的四个元素: table.tbody.tr.th.td 1.& ...
- (转载)小课堂UI-Star Diamond Tutorial
- Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果
windows phone中做动画其实很方便的,可以使用Blend拖来拖去就做出一个简单的动画,下面做了一个 ios屏幕小白点的拖动效果,包括速度判断移动 使用Blend生成以下代码 <Stor ...
- 疯狂学习java web5(SSI框架)
其实前面的所有只是铺垫,目的只是为了了解现有工程是怎样的.之前直接上来就看,看了很久依然是云里雾里,所以不得已学习点基础知识,前面的基础只是蜻蜓点水一带而过,希望能起部分作用了. 发现struct2有 ...
- sql编程 1
declare emp_count number;begin select count(*) into emp_count from emp where HIOREDATE >= TO_DATE ...
- PHP图的绘制1
最近在学习php图的绘制,写的代码放上来,供自己以后学习查看: <?php //*函数说明: //这个函数返回的是 // resource imagecreate ( int $x_size , ...