旅程是要綿綿無期的,隨著自己在旅程的進行,過去總會有一些需要討論會是整理的地方。
所以今天要小歇片刻,回想一下前幾天的過程~
在認識了 activity 之後,不知道各位有沒有回想或是注意到過去兩個 Moogle 的切換,好像哪裡怪怪的!按鈕按了幾次,訊息傳了幾次,在我想要按下返回鍵回到桌面時,好像有按不完的"返回"鍵啊!
有發現哪邊怪怪的了嗎?先來看看下面這張圖
嗯!是的,我們每按一次系統就為我們新增一個 Moogle!
在表面上看起來我們都是將資訊從 Moogle2 回傳給 Moogle1 再傳給 Moogle2...,的過程中,其實我們傳遞的對象,都是新的分身(從onCreate()開始的新activity)
所以,一直玩下去,我們就可以玩影分身之術了(喂!)
不過,各位可能會想一件事情,這樣一直"分身"下去,記憶體不會爆炸嗎?
是的!他不會爆炸!請看到下圖
我們拿昨天的範例再來跑個一陣子,有機會看到上圖中標示起來的地方,系統會自動啟動一個叫做GC(Garbage Collection)的機制,就是將存放"已久"的資源清掉!也就是有一些進入stop()狀態的activity會自動被系統清掉!
只是,相信這樣的切換一定不會是大家預期的結果,大家一定會想說,我要確保只留一個就好了,不需要到那麼多"分身"來做這樣事呀!這時,我們只要下一個指令就好了:
finish();
沒錯!就是這麼簡單,只要將這一行指令放到 startActivity(intent) 之後即可,加上去後,我們的流程會變成下圖這樣,
紅色的線,是當 Moogle1 切換到 Moogle2,待 Moogle2 的流程走到onResume()時,流程會再回頭將 Moogle1 剩下的onStop()以及onDestroy()走完。而藍色的線則是從點下 Moogle2 的按鈕,從 Moogle2 的 onPause() 狀態往下走回 Moogle1,當 Moogle1 的流程停在 onResume()時,Moogle2 便會再走完 onStop() 以及 onDestroy()兩個狀態嘍!
所以這邊就請大家自行拿昨天的例子來嘗試去觀察看看紀錄貓的筆記嘍!
========================================================================
接下來,要為各位說明在前天的最後,那幾張圖片裡,在下做了哪些事情!
不過,好奇的一問,大家有去想過那幾張圖中,做了什麼事嗎?
一、先將兩個 Moogle 的"訊息"按鈕都加到三個,也就是這三個按鈕都出現了!
二、身為後勤兵的 Moogle2 三個按鈕分別的動作是:
Positive:增加支援,也就是跟原本一樣,回報帶回多少援軍。
Negative和Neutral:分別是"有雜訊"以及"不管",所做的動作都是去動傳來的訊號源"Signal"值,也就是改變了要回傳的訊息內容!
三、接獲回報的 Moogle1 則是在取出包裹後,再分別決定要做的三件事(按鈕):
Positive:接收,直接再用 Toast 拋出接收到的訊息。
Negative:重送,重新產生一個訊號值,再傳給 Moogle2。
Neutral:說法,用 Toast 跟勇者對話啦
以上程式碼再請各位從 Mosil's GitHub 取得哦^_^
都說要小歇片刻,還這麼圖文並茂,大大對安卓熱誠直可比擬中東那些狂熱的...什葉派份子....說!您是不是基地派來臥底的?
所以今天只有跟大家介紹"finish()"這八個字而已啊