爲安卓App加個退出鍵

近期需要把一款手遊遷移到Android上,由於一直用cocos2d-lua,對Android不熟悉,漏掉了退出鍵的實現,在測試童鞋的反饋下才意識到。想着這些問題一定有很多Android前輩遇到過,翻牆一查,還沒看到解決方法,先看到一場關於『結束正在運行的Android程序』的爭論,見StackOverflow這裏。

提問者的疑問是,爲什麼安卓系統決定了何時退出App,而不是用戶決定。也就是說用戶並不能真正退出某個app。我也用過android手機,在想要退出某個app時,一般點擊返回鍵兩次確認就退出了。難道這只是幻覺?習慣iOS操作的童鞋一定知道,按Home鍵,只是退回到了桌面,app會進入休眠,iOS系統會決定何時終止app。Android也可以按主頁返回到桌面,這個我理解和iOS是類似的。那麼以略爲複雜的方式,比如兩次返回退出App(一般調用system.exit(0)或finish())應該可以『乾淨地』結束掉App的運行了吧?

看了幾個回答,發現我的理解是錯誤的。

高票回答從Android設計哲學的角度闡述了爲什麼android系統控制何時結束App的運行,用戶其實並不能『真正意義』結束。他的觀點是用戶並不真正想結束App,真正的想法只是不再使用這個App了,想切換到其他App而已。

次高票從技術角度闡述現有幾種『退出』方式,比如:

  • System.exit()並沒有結束App的運行,它真正做的事情是殺死App進程並立刻重啓
  • finish()是結束掉某個Activity,如果想退出App,需要想辦法遍歷所有的activity並且依次調用finish()(然而並沒有方法去遍歷activity這件事╮(╯▽╰)╭)
  • Activity.moveTaskToBack(true)將App進程放入後臺並且顯示Home Screen
  • Process.killProcess(Process.myPid())被很多人認爲是立刻結束進程,並釋放資源的好辦法

總結:如果玩家想要一個退出按鈕,我就給他們一個吧,反正他們也不在乎是否真正退出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章