back跟home鍵的差別??

我知道這是一個舊問題了!!但是我的好奇心讓我晚上睡不著跑去試

我有拜讀過01站友的一篇文章
http://s8726319.tumblr.com/post/2561715358

但是我試過幾個軟體..在這些軟體沒有退出或結束鍵~如QuickMark
當我用back鍵去退出時...再去用程序管理員進去看~他是backgroud process
為什麼他不是empty process呢...


機型SE Xperia Play 2.3.4
程序管理員


----------------------
另外我也去查了一下

The 'back' key works similar to ESC in the desktop version of Processing. (Pressing ESC in the emulator actually emulates hitting the 'back' key, though it may beep at you first.) By default, this will exit your application. If you want to do something smarter, override keyPressed() and set 'key' to 0 so that the key doesn't get picked up by the base class:


void keyPressed() {
// doing other things here, and then:
if (key == CODED && keyCode == KeyEvent.KEYCODE_BACK) {
keyCode = 0; // don't quit by default
}
}

因為back在android是退出的命令
是不是這些程式設計師在設計程式是把back模擬成像電腦的back~卻沒想到退出的問題~
所以這種程式在按back跟home退出~其實都是一樣丟到background~
2011-11-16 2:13 發佈
文章關鍵字 Back 差別 Home

dominic2708 wrote:
我知道這是一個舊問題...(恕刪)

按鍵行為可以被改寫,
所以要停止就用程式管理員去 "強制" 停止吧

規定是死的, 做法是活的
我是誰? 鼻孔癢!

dominic2708 wrote:
我知道這是一個舊問題...(恕刪)





ANDROID程式流程:
1. AMS 的 IPC 機制
2. Zygote fork new process (MMAP)
3. Runtime Init (Prepare Message Loop)
4. ActivityThread Init(ClassLoader)
5. 開始跑程式設計者的程式主體
6. 暫時停止程式

按back跟home的結果 都是把程式在上面的流程 5 和 6 切來切去而已;所以程式還是會在記憶體裡面,當然程式設計者可以在步驟6的地方,設計讓自己完全重記憶體釋放,但這樣會造成下次跑程式的時候,又得從步驟1開始跑,所以重開的話反而會覺得慢慢的.
(因為一般程式 你按back或home,就是在步驟5和6切來切去;如果你用工具管理員或者程式自己特別做,就得在1~6這些步驟切來切去!)

你說速度會變慢嗎? 基本上是會的,大一點的程式幾百ms是跑不掉的!
砍了
151515151515151515
Gpc wrote:
按back跟home的結果 都是把程式在上面的流程 5 和 6 切來切去而已;所以程式還是會在記憶體裡面,當然程式設計者可以在步驟6的地方,設計讓自己完全重記憶體釋放,但這樣會造成下次跑程式的時候,又得從步驟1開始跑,所以重開的話反而會覺得慢慢的.
(因為一般程式 你按back或home,就是在步驟5和6切來切去;如果你用工具管理員或者程式自己特別做,就得在1~6這些步驟切來切去!)

你說速度會變慢嗎? 基本上是會的,大一點的程式幾百ms是跑不掉的!
恕刪)


有一種情況就是以SONY ERISSON來說..
假如一旦畫面不在首頁~就是說SE的桌面程式被放在BACKGROUND PROCESS
當RAM有需要大砍時..可能就有機會導致桌面PROCESS被砍掉~此時從其他程式切回桌面就會因重新載入而LAG~
如果有嚴格做好BACK時~通常就會先砍EMPTY~不夠才再砍BACKGROUND~

雖然說另外的方式去設定避免什麼程式去砍掉
但是既然有BACK跟HOME的差別~我覺得所有軟體應該都要遵守~尤其是遊戲類的


另外謝謝你的回覆...感謝
dominic2708 wrote:
有一種情況就是以SO...(恕刪)


這只有發生在規格差記憶體少的機子 換台好點的機子就沒這困擾了

沒人會這麼做,想必是有他的原因!畢竟全世界的開發者為數也不少.主要的原因還是,


1.因為ANDROID的SDK就是這麼設計!多做反而是不符合SDK的流程~
2.會破壞程式的流程! 因為static的東西在back時是可以保留住的!
比方說 程式裡面每次開啟都會透過網路檢查某些值,檢查完之後就保存成static,
如果按這種方式設計就會被清除,導致你每次開程式都在那邊做網路檢查,user反而會罵死 (最常遇見的例子就是LVL)

很多東西要實際設計才會知道,光看文件是很難體會奧妙的

如果你怕launcher被砍掉 你可以換比較大RAM的機子或者調整LMK的閥值~

Gpc wrote:
這只有發生在規格差記...(恕刪)


感謝您的回覆~我再去多研究研究再來跟您請教
謝謝
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?