2013年8月21日 星期三

【開版文/Android】好大一顆按鈕!(用同一個Acitivty進行Activity切換)


這是一個Activity(我將它命名為BaseActivity)的OnCreate()的內容。

這個Activity就是產生一顆按鈕,而且是很大的一顆按鈕。每按一下這個按鈕,就會啟動一個新Activity,──但仔細看看程式,會發現這個Activity也是BaseActivity。

新的Activity和產生/呼叫它的舊Activity之間的差異在於按鈕上顯示的文字,──新的Activity會比舊的Activity多一個「?」。

(Activity No.0的按鈕如果沒有「?」,則Activity No.1會有一個「?」,以此類推,Activity No.2會有兩個「?」。)



一支APP有的時候會需要在具有不同功能的界面間切換畫面。Android的原始概念是希望讓設計者可以用「產生新頁」、「關閉目前頁面,回到上一個頁面」來實現這個切換的需要。

但實作時發現了一個問題,就是Activity本身的程式大小遠超過「功能」與「界面」的程式大小。

如果功能越多、需要的Activity越多,程式容量成長的幅度可能會遠遠超出預期容許範圍。

但(我覺得)這是許多教學程式/範例的撰寫者因為偷懶方便而聯合造成的美麗錯誤,仔細想一下就會知道「OnCreate()」的意義並不是「讓設計者設置/產生自己期望的功能」,而是「讓Android作業系統底層呼叫的接口」。

這兩者不能同時並存嗎?

不是不能,而是不需要!

「setContentView()」內傳入的View並「不一定」要由Activity產生!可以由獨立的物件產生。

這個獨立的物件程式大小絕對遠小於Activity。



寫這個練習程式的概念在於:用同一個Activity重覆呼叫/切換,然後在Bundle中帶入不同的「指令」來辨識該產生什麼樣的View傳入「setConentView()」。

至於為何會需要/想出這個概念?

主要是因為這篇文章「一個 App 下載值多少錢」。

因為手機內的記憶體越作越大,大家好像會開始縱容自己設計的APP檔案大小隨意成長。

其實我們沒有理由去相信/擔憂這個問題會變成災難,可是......如果能簡單幾個小動作就提升自己的程式效能,相信沒人拒絕、沒人會懶得動腦,同樣的,如果可以嘗試將自己的APP檔案瘦身,為何不做看看?

(我這個練習只是個人預想,到底有沒有效?拿這個方法來修改自己已經完成的APP會不會有效減小它的檔案大小?......完全沒根據啦!我本人從「領悟」到這點後,除非必要,否則我寫APP都嚴格奉行「只用一個Activity」,還沒機會去測試會發生什麼事。)