2012-10-02 24 views
1

快速問題,但我無法在文檔中找到答案。Android中的靜態字段壽命

Android應用程序中靜態字段的使用壽命是多少?什麼時候被初始化,什麼時候被銷燬?最終屬性是否修改其生命週期?那麼私人/公共?只要應用程序實例處於活動狀態,它們就活着嗎?

舉兩個例子:

public class DemoClass { 
    static int one = 1; 
    static int three = DemoActivity.two + one; 
} 

public class DemoActivity extends Activity { 
    public static int two = DemoClass.one + DemoClass.one; 
    private static final int four; 
    public static int five; 

    public void onCreate(Bundle b) { 
      four = two + two; 
      five = DemoClass.three + DemoClass.one + DemoClass.one; 

    } 

} 

編輯:還有什麼是靜態字典?

例如,

public class AnotherDemoActivity extends Activity { 
public static ArrayList<String> strings = new ArrayList<String>(); 

@Override public void onCreate(Bundle b) { 
    strings.add("test"); 
    strings.add(new String("another test"); 
    strings.add(new DemoClass()); 
} 

的 「字符串」 元素將活多久呢?

回答

1
  • static範圍是直到課堂未部署。在啓動時(加載後立即)啓動

    編號final屬性不會修改上述行爲。
+0

「靜態範圍是直到類是未展開。」那是什麼意思?如果我從來沒有實例化那個類會怎麼樣? – StackOverflowed

+0

您不需要實例化一個類來訪問靜態變量,它們不是實例範圍的,它們是類的範圍。 – kosa

5

什麼時候被初始化?何時被銷燬?

它在聲明它的類被加載時被初始化,它會一直存在直到你的應用程序進程結束。

最終屬性是否修改其生命週期?

沒有

什麼私有/公共?

沒有

他們住,只要應用實例是活?

+0

Application類是否加載其所有類? DemoClass何時加載?假設它是一個公共類,如果這很重要,則在它自己的文件中聲明。 – StackOverflowed

+1

我相信它與Java類加載器相同,只會在被加載的其他類引用它們時加載類,當加載引用類時會加載DemoClass,例如DemoActivity –

+0

我相信我也可以'似乎找不到任何文件來支持它! :) – StackOverflowed