Android問答 如何實現「退出應用」功能?

2021-09-27 11:20:16 字數 961 閱讀 1612

剛從桌面應用開發轉做手機開發的同學常常被這個問題困擾——使用者按下home鍵後,應用不是「完全退出」而是「執行在後台」,它仍然占用著系統資源,這麼多後台執行的應用必然導致系統變慢,是不是應該在我的應用裡給使用者提供乙個「退出選單」或「退出按鈕」呢?

我在android開發文件裡暫時沒有找到關於這個問題的解釋,但經過在網上調查很多資料以後,我認為答案是比較明顯的:不應提供「退出應用」功能

雖然文件裡沒有明確說明,但假如這是常用功能,應該有簡便的方法實現,而實際上要靠**「退出」乙個應用並非易事。以下總結了能夠模擬退出效果的兩個方案:

方案1:開啟系統主屏來模擬應用退出的效果,這和使用者按home鍵沒有什麼區別。

intent intent = new

intent(intent.action_main);

intent.addcategory(intent.category_home);

intent.setflags(intent.flag_activity_new_task);

startactivity(intent);

int pid=android.os.process.mypid();

android.os.process.killprocess(pid);

此外,有人建議呼叫system.exit(0)退出應用,實際測試發現這個方法常常只能關閉當前activity,或是根本不起作用。

由此可以看出,android系統的設計裡本來就沒有「退出應用」的機制,當使用者按下home鍵或在應用首頁裡按下back鍵後,應用被置於後台,而何時要徹底殺掉應用程序則由系統決定。android和ios都已拋棄了「退出應用」這個概念,對手機使用者來講,他只需要知道「啟動應用」——概念越少越簡單。

android 啟動退出

由於android的退出,系統真不好說,比如按home鍵或者是正常退出,又比如被系統殺掉。強制退出的方法網上挺多,但確實不太符合開發規範。比如 普通standardmode的activity之間,是會保持住棧之間的順序的。這個時候需要自己恢復資料。我認為程式啟動後,activity的方式可以如下 a...

android 滑動退出

view decorview int screenwidth 屏寬float startx,starty,endx,endy,distancex,distancey override public boolean dispatchtouchevent motionevent event 1.判斷手勢...

Android 退出功能

對於新增和刪除操作add和remove,linedlist比較佔優勢,因為arraylist實現了基於動態陣列的資料結構,要移動資料。linkedlist基於鍊錶的資料結構,便於增加刪除 private listactivitylist new linkedlist if null instance...