大家好,又见面了,我是全栈君。
假设你一年前写的代码 , 在如今看来你还感觉写的非常不错 , 那么说明你学习的不够多.
-
不要在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. 寻找开源码的应用 去解决相似你须要的功能或模块. 这个应用可能会用到你不知道的第三方库.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115653.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...