原创 Android開發代碼編寫規範

Android開發之命名規則 1、不要使用拼音命名 名稱應簡潔而富於描述,使用完整單詞,避免使用縮寫(除非該縮寫被更廣泛使用,例如URL、HTML) 2、包命名 包名由小寫的字母組成,默認以com.xin126.android.

原创 你所不知道的傳輸層(TCP/IP)

1. 傳輸層的主要功能是什麼? 2. 傳輸層如何區分不同應用程序的數據流? 3. 傳輸層有哪些協議? 4. 什麼是UDP協議? 5. 爲什麼有了UDP,還需要TCP? 6. 什麼是TCP協議? 7. 怎麼理解協議和程序? 8. TCP是

原创 handler底層是如何將消息從子線程發送到主線程

這個問題的實質是handler機制+引用的傳遞. 理解handler機制有很多方法,我推薦的方法是從四個關鍵類Handler、Message、MessageQueue、Looper的方法入手來弄清消息傳遞這一整條線的邏輯: 這條線的走向

原创 Google I/O 2015 Android Design

詳情見官方博客: http://android-developers.blogspot.fi/2015/05/android-design-support-library.html

原创 不要在Android的Application對象中緩存數據!

說明   這是翻譯老外的一篇文章,我之前有遇到過這個問題,並且看到有人在Segmentfault上問,最主要我在StackOverflow上居然沒搜到累死問題,所以覺得有必要翻譯過來以便後面不會再這樣處理。 前言   在你的App

原创 Android 性能調優點

主要包括同步改異步、緩存、Layout優化、數據庫優化、算法優化、延遲執行。 1. 同步改異步 這個就不用多講了,耗時操作放在線程中執行防止佔用主線程,一定程度上解決anr。 但需要注意線程和service結合(防止activit

原创 Android java 結束線程的正確操作

線程對象屬於一次性消耗品,一般線程執行完run方法之後,線程就正常結束了,線程結束之後就報廢了,不能再次start,只能新建一個線程對象。但有時run方法是永遠不會結束的。例如在程序中使用線程進行Socket監聽請求,或是其他的需要循環

原创 ListView加載速度/性能優化方案分析

Adapter是listview和數據源間的中間人.當每條數據進入可見區域時,adapter的getview()會被調用,返回代表具體數據的視圖.觸摸滾動時,頻繁調用.支持成百上千條數據.下面爲顯示每條數據的xml文件: 1.最簡單的

原创 EditText 防止自動彈出軟鍵盤

在父佈局中 EditText 的前面 加上: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"

原创 handler總結

概述  Handler是android用來更新UI,處理消息的機制。 使用線程和Handler更新UI 方法一  新建handler對象,並覆寫handleMessage(),在主線程中開啓一個子線程,進行耗時操作(比如下載圖片),

原创 Android 監聽屏幕鎖屏,用戶解鎖

public class ScreenListener { private Context mContext; private ScreenBroadcastReceiver mScreenReceiver; pr

原创 Android應用UI架構

這個標題聽起來可能有點大,其實這裏主要就是討論一個應用程序的UI組件,是全用Activity還是全用Fragment,或者是二者皆有,以及使用Activity和Fragment的一些注意事項。  Activity or Fragme

原创 不應該把數據放在 Application 中

在開發中不應該把數據放在 Application 中,因爲這事不安全的做法,可能你在接一個電話後回來,你的App 會 由於 NullPointerException 而 crash,這事由於你的Application可能是被系統回收掉了

原创 Android -- Facebook -- HashKey的生成

1.先下載openssl軟件地址:https://openssl-for-windows.googlecode.com/files/openssl-0.9.8e_X64.zip 2.配置openssl的路徑,到系統path 3.進入CMD

原创 什麼導致了Context泄露:Handler&內部類

public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override