標籤:android style blog http ar io color os 使用
上次更新後又發現了一些bug,而且是非常明顯的bug,一一加以改正了過來。
猜數字遊戲的功能已基本實現,不過我覺得一個應用單做一個遊戲有點不太過癮,略顯單調,於是我打算基於這個,寫一個n合1的遊戲整合應用,一個應用整合多款遊戲,這樣就可以通過一個應用想玩什麼遊戲就玩什麼遊戲了,雖然可能只會實現一些簡單遊戲,但是反正是自己寫著玩嘛,有興趣就有動力,嘿嘿。
---------------------------------------------------------------------------------------------------------
本次更新:
1.修正了應用程式安裝產生兩個表徵圖的問題2.修正了Activity載入模式3.遊戲最終主介面的設計
4.遊戲更名
---------------------------------------------------------------------------------------------------------
1.修正了應用程式安裝產生兩個表徵圖的問題。
,在安裝應用程式後出現了兩個應用表徵圖。
由於AndroidManifest.xml中兩個Activity中都包含了<action android:name="android.intent.action.MAIN" />, 即有兩個主進程,所以會產生兩個應用表徵圖,將RankActivity的這條語句刪去,就成功解決了這個問題。
2.修正了Activity載入模式
軟體的另一個bug在於,如果不斷地在兩個Activity之間切換,那麼在多次以後,按MainActivity中的退出是不會馬上退出程式的,而是不斷地退到MainActivity,然後很多次以後才會退出程式,這是Activity載入模式的問題。
首先我們來瞭解一下Android Activity的四種載入模式:
1.stantard: 標準模式。
預設載入模式,每次通過此模式來啟動目標Activity時,都會建立一個新的執行個體,並將該Activity加入到Task棧中(Task棧是用來管理Activity的)。
剛開始我用的就是預設的stantard模式,導致每次按下排行鍵,就會建立一個RankActivity的執行個體,並放到Task棧頂,轉入RankActivity時並不銷毀MainAcitvity,然後在熱門排行榜裡面按下返回鍵時,又重新建立一個MainActivity的執行個體,放到棧頂,RankActivity每次都會銷毀,所以多次在Activity間切換時,實際上棧中的Activity越來越多,而且都是MainActivity,這就解釋了為什麼在MainActivity中按退出還是會到MainActivity,因為它在一層一層地出棧。
2.singleTop: Task頂單例模式
與standard模式基本相同,唯一的不同就是: 當將要啟動的目標Activity已經在棧頂時,不再建立該Activity的執行個體,而是直接服用棧頂已有Activity。即“棧頂元素相同的只能有一個”,就是singleTop的意思。‘
3.singleTask: Task內單例模式
即在同一個Task內只能有一個執行個體,即只有一個Task,且Task內只能有一個相同的執行個體。
如果將要啟動的目標Activity:
(1)不存在,那麼建立執行個體,並放到Task棧頂
(2)已經位於Task棧頂,那麼處理同singleTop
(3)已經存在,但是沒在棧頂,那麼把它上面的執行個體刪去,讓它成為棧頂。
4.singleInstance:全域單例模式
採用此種模式,系統保證無論從哪個Task啟動目標Activity,只會建立一個該Activity執行個體,並會建一個全新的Task來儲存該執行個體。
即: 每次目標Activity如果不存在,那麼建立一個Task,將其放到Task棧頂,然後如果存在,那麼把該Task放到前台即可。 這種方式每個Task中只會有一個執行個體。
--------------------------------------------
經過三種實驗:
1.直接在MainActivity中加finish(),每次跳轉都結束自己。
2.採用singleTask模式。
3.採用singleInstance模式。
第一種的話,無法儲存現場,導致每次猜數字中途去看排行都會清除掉這次猜的情況,即無法儲存現場。 第三種雖然能保護現場,但是跳轉時間隔時間太長,不符合這種小應用,我不希望這種小應用在任何一個地方延遲過多時間。所以,我決定用singleTask模式來處理和載入兩個Activity,並且在調轉時先不寫入資料。這樣的話,跳回來時可以繼續接著玩。
---------------------------------------------------------------------------------------------------------
3.遊戲最終主介面的設計
在網上找圖,自己P按鈕都用了好久,雖然按鈕設計地有點醜,但是目前就這樣吧。
然後就是調整MainActivity,加ImageButton,實現Activity間的切換等,按部就班地完成了。
先來看看主介面 ( 求輕噴 ):
然後是登入介面,本來是想一併做成對話方塊形式,但是還有一些問題,導致沒能實現,下次估計就能實現了。
點擊"猜數字遊戲"就進到猜數字遊戲的主介面,目前來講,這是本應用的核心功能。。
點擊"關於"可以得到軟體資訊,包括作者,版本等等。
4.遊戲更名
遊戲更名為NinOne,取n合1之意。
---------------------------------------------------------------------------------------------------------------
OK,這次代碼就不貼了,下一步應該好好研究下Git的使用,將代碼傳到github上管理好一點,總不能每次一個一個地貼啊。
本來這一次要實現資料庫的應用的,但是考慮到應用有所變化,等以後可能會實現一個遊戲的全域資料庫,所以資料庫先擱置一下。
下一步的話,先搞好Git,然後就應該好好想一下全域的架構設計了,一個猜數字遊戲好說,就是無腦寫演算法,然後放到一個Activity中即可,但是要實現多個遊戲,就應該好好想想怎麼去設計整個構成以及邏輯,以及資料庫的設計等等了,不能只是埋頭編碼,更要抬頭看路,我可不想寫到最後發現整個邏輯混亂至極,就像寫類比題一樣,寫著寫著自己都寫暈了,然後就gg了。
----------------------------------------------------------------------------------------------------------------------------------
下一步:
Git的使用,上傳代碼以及全域的架構設計。
----------------------------------------------------------------------------------------------------------------
APK: 點我下載
2014.12.19
【原創Android遊戲】NinOne V2.3.1 --載入模式的學習,介面的重新設計