1. 程式人生 > >Android開發筆記之工具類使用靜態方法與單例物件方法的優劣

Android開發筆記之工具類使用靜態方法與單例物件方法的優劣

最近在做專案開發的時候用到了很多工具類,之前對工具類的理解僅限於使用靜態方法,沒有細究.寫了很多有損app執行效能的程式碼.例如在靜態方法內建立了例項物件,這樣讓靜態方法持有物件,使得物件一直存在與記憶體中,無法被GC回收,佔用記憶體,影響效能和使用者體驗,除非退出JVM,才得以釋放,,我承認這樣很菜,畢竟誰都從菜雞過來的.

~

首先看工具類需不需要具有物件的各種屬性,或者實現某個介面,或者當作引數傳遞等.而且單例模式不用擔心物件的初始化,也不需要擔心執行緒安全的問題,選擇單例物件實現當然最優.下面一段在其他文章中看到的單例模式的程式碼,它可以解決經常會呼叫synchronized的問題,也不會在沒有真正使用物件的時候浪費記憶體,升級版的懶漢式 :

public class Singleton {  
    private volatile static Singleton singleton;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
    if (singleton == null) {  
        synchronized (Singleton.class) {  
        if (singleton == null) {  
            singleton = new Singleton();  
        }  
        }  
    }  
    return
singleton; } }

現在我平時開發時還沒有上面的需求,一般都是直接採用靜態方法,直接類名呼叫,大家都知道,被static修飾符修飾的方法或變數都是隨著類的載入而載入,在靜態方法內儘量避免初始化物件,可當做引數傳入,這樣在方法被呼叫執行完物件就可以被系統GC回收.對於兩種方式實現工具類效能都不會差太遠,重要的是在對例項物件的處理.

引路: