给Android程序员的六个建议
給Android程序員的六個建議
分類:?安卓相關2015-07-14 23:58?177人閱讀?評論(0)?收藏?舉報 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); } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
這個毛病可能很多人都會犯過 , 如果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(); //.. } } } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
這段代碼有很多問題 , 我們把終點放在隱式引用 . 在Java中 , 對于包含靜態內部類的類 , 非靜態內部類具有隱式引用.
本段代碼中 , 對與外部類DefineGeofenceFragment?將持有一個?GetLatAndLongAndUpdateMapCameraAsyncTask?引用
對與包含內部類的外部類來說 , 他們有一個隱含的引用包含匿名類的類的實例 , 該GetLatAndLongAndUpdateMapCameraAsyncTask?有一個隱含的引用片段
Android Studio 讓你更快捷, 更舒服?
AS提供的快捷鍵和live templates,會讓你寫起代碼飛快,目前Android Studio已經可以支持NDK開發,日后會有越來越多的人喜歡Andriod Studio并使用它來開發。
有一個在我寫這超過100行的類之一的方法。這樣的方法難以閱讀,修改和重新使用。試著寫的方法只能做一件事。通常情況下,這意味著你應該懷疑的是超過20行代碼的方法。在這里,你可以招募的Android Studio來幫助你發現問題的方法。
向比你有經驗的人學習?
這可能聽起來微不足道,但它是一個錯誤,我做的時候,我寫我的第一個應用程序。?
當你寫一個應用程序,你會犯錯誤。其他人已經取得了這些錯誤。從這些人的了解。你是在浪費你的時間,如果你重復別人的可以避免的錯誤。我浪費了大量的時間在我的第一個應用程序使得我本來可以避免,如果我只是花了一點時間,從經驗豐富的軟件開發人員學習錯誤。?
閱讀程序員修煉。然后閱讀有效的Java。這兩本書將幫助你避免我們作出開發新手常犯的錯誤。當你與那些書做,不停地尋找聰明的人學習的榜樣。
多使用第三方庫?
當你寫一個應用時 , 你可能會遇到更聰明 , 更有經驗的人已經解決了你的需求或問題. Android 有很多開源庫 , 我們可以多利用他們。?
在我的應用中 , 我經常使用第三方庫提供的功能 , 比如 Retrofit 和 Picasso . 如果你不確定你需要哪種類型或功能的庫 , 下面介紹一下比較流行的幾款庫:
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
總結
以上是生活随笔為你收集整理的给Android程序员的六个建议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware网络配置详解
- 下一篇: URAL 1721 Two Sides