而本文講解的其實(shí)并不是一個(gè)技術(shù)方面崇堵,而是一個(gè)Android產(chǎn)品研發(fā)過程中的技巧:盡量不使用靜態(tài)變量保存核心數(shù)據(jù)鼠渺。
這是為什么呢宵晚?這是因?yàn)锳ndroid系統(tǒng)中的應(yīng)用進(jìn)程并不是安全的集绰,包括application對(duì)象、靜態(tài)變量在內(nèi)的進(jìn)程級(jí)別變量并不會(huì)一直呆著內(nèi)存里面知押,它會(huì)被kill掉,它真的有可能會(huì)被kill掉鹃骂,真的真的台盯,重要的事情說三遍。
與大家普遍的看法不同之處在于畏线,當(dāng)進(jìn)程被干掉之后静盅,實(shí)際上app不會(huì)重新開始啟動(dòng)。Android系統(tǒng)會(huì)創(chuàng)建一個(gè)新的Application 對(duì)象象踊,然后啟動(dòng)上次用戶離開時(shí)的activity以造成這個(gè)app從來沒有被kill掉得假象温亲。而這時(shí)候靜態(tài)變量等數(shù)據(jù)由于進(jìn)程已經(jīng)被殺死而被初始化棚壁,所以就有了我們的不推薦在靜態(tài)變量(包括Application中保存全局?jǐn)?shù)據(jù)靜態(tài)數(shù)據(jù))的觀點(diǎn)。