原创 Android 各個Support Library介紹

參考: http://zmywly8866.github.io/2015/10/09/android-support-library.html V4 Support Library 這個包的名字是:“android-support-v

原创 Java 內存模型JMM

參考: java內存模型 JMM(Java memory model):通俗地講,就是描述Java中各種變量(線程共享變量)的訪問規則,以及在JVM中將變量存儲到內存和從內存中讀取變量這樣的底層細節。 結合上圖,先介紹幾個概念: 主內

原创 HashMap的實現原理

1.HashMap概述:    HashMap是基於哈希表的Map接口的非同步實現。此實現提供所有可選的映射操作,並允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恆久不變。 2.HashMap的數據結構:   

原创 Android開發常用功能

1.定時器的實現 (1)採用Handler的postDelayed(Runnable, long)方法 <strong>Handler handler = new Handler();   Runnable runnable = ne

原创 垃圾收集(Garbage Collector,GC)

Java的內存分佈 在JVM中,內存是按照分代進行組織的。 其中,堆內存分爲年輕代和年老代,非堆內存主要是Permanent區域,主要用於存儲一些類的元數據,常量池等信息。而年輕代又分爲兩種,一種是Eden區域,另外一種是兩個大小對

原创 Android 性能優化

佈局優化 Android性能優化之如何避免Overdraw(可參考) (1)避免Overdraw Overdraw,過度繪製會浪費很多的cpu,Gpu資源,例如系統默認會繪製Activity的背景,如果在給佈局重新繪製了重疊的背景,那麼

原创 Java多線程同步(鎖)的實現方法(synchronised 與reentrantlock)

synchronised synchronized是Java中的關鍵字,是一種同步鎖。它修飾的對象有以下幾種:  1. 修飾一個代碼塊,被修飾的代碼塊稱爲同步語句塊,其作用的範圍是大括號{}括起來的代碼,作用的對象是調用這個代碼塊的對

原创 Java的容器 List、Set、Map的區別

在編程中,常常需要集中存放多個數據。從傳統意義上講,數組是我們的一個很好的選擇,前提是我們事先已經明確知道我們將要保存的對象的數量。一旦在數組初始化時指定了這個數組長度,這個數組長度就是不可變的,如果我們需要保存一個可以動態增長的數據(在

原创 Android跨進程通信IPC

參考: android中跨進程通訊的4種方式 android跨進程通信(IPC):使用AIDL 使用AIDL實現進程間的通信 Android Service完全解析,關於服務你所需知道的一切(下) Activity與一個遠程Service

原创 java鎖的種類及研究

Java鎖的種類以及辨析 鎖作爲併發共享數據,保證一致性的工具,在JAVA平臺有多種實現(如 synchronized 和 ReentrantLock等等 ) 。這些已經寫好提供的鎖爲我們開發提供了便利,但是鎖的具體性質以及類型卻很少被提

原创 HashMapvs.TreeMap vs. Hashtable vs. LinkedHashMap

Map是最重要的數據結構。這篇文章中,我會帶你們看看HashMap, TreeMap, HashTable和LinkedHashMap的區別。 Map概覽 Java SE中有四種常見的Map實現——HashMap, TreeMap, Ha

原创 Android Application

  Application和Activity,Service一樣是android框架的一個系統組件,當android程序啓動時系統會創建一個 application對象,用來存儲系統的一些信息。通常我們是不需要指定一個Applicatio

原创 Android 面試常見問題

節約電量的方法 http://hukai.me/android-performance-battery/ • 實時性不高的程序用AlarmManager的定時輪詢操作代替推送操作。 android中涉及到將服務器中數據變化信息通

原创 Android內存管理

1.Android 運行時的內存分配:http://www.jianshu.com/p/9546d21376ed# 物理內存即移動設備上的RAM,當啓動一個Android程序時,會啓動一個Dalvik VM進程,系統會給它分配固定的內存

原创 線程

1.線程和線程池 1.1線程類創建的兩種方法: //方法一:繼承Thread 類,實現run方法。 class ThreadTest extends Thread { ThreadTest() { } public void run()