當文檔「onPause」被調用時,當:爲什麼在以下情況下不會調用「onPause」?
當系統即將開始恢復以前的活動時。
相比「的onStop」,所不同的是:
當活動不再對用戶可見調用,因爲其他活動已經恢復並且覆蓋這一個。
但是,當我長按HW-Home鍵和「最近使用的應用」出現時, 了「的onPause」不叫。
此時,我無法長時間與原始活動 進行互動,但仍然可見。
我很困惑這種情況。 請幫忙解釋一下。
非常感謝。 BR, 亨利
當文檔「onPause」被調用時,當:爲什麼在以下情況下不會調用「onPause」?
當系統即將開始恢復以前的活動時。
相比「的onStop」,所不同的是:
當活動不再對用戶可見調用,因爲其他活動已經恢復並且覆蓋這一個。
但是,當我長按HW-Home鍵和「最近使用的應用」出現時, 了「的onPause」不叫。
此時,我無法長時間與原始活動 進行互動,但仍然可見。
我很困惑這種情況。 請幫忙解釋一下。
非常感謝。 BR, 亨利
實際發生這種情況是因爲長時間按住Home鍵時,沒有任何活動正在啓動。 onPause/onStop僅在您選擇「最近使用的應用程序」列表中顯示的其中一個應用程序時纔會被調用。
的onPause()的文檔是很清楚的:
調用當活動即將 到背景活動生命週期的一部分,但還沒有(還)被殺害。
謝謝,MobileCushion, 你的回答是正確的。 關鍵是「最近的應用程序」不會被添加到應用程序堆棧中,因此結果是 。 – Henry 2012-02-22 06:59:52
當你調出最近使用的應用調用OnStop方法被調用,調用OnStop方法被立即調用作爲活動的UI不是重點,因爲這樣
@Henry請嘗試自己通過測試應用程序的流程。創建一個活動,其中覆蓋所有方法並在所有方法下打印日誌。流程是onCreate >> onStart/restart >> onResume,當你按Home鍵或開始任何新的活動,然後它調用onPause >> onStop,如果你完成你的應用程序,那麼你的應用程序是銷燬/完成,所以在哪裏混亂。
這是官方文件說什麼onPause()
調用當活動即將 到背景活動生命週期的一部分,但還沒有(還)被殺害。與onResume()的 相對應。
當活動B是活性的前推出,這個回調將 可以在A,B調用不會直到A的的onPause創建()返回,所以 一定不要做任何冗長這裏。
詳細信息please see this。
public class MainActivity extends Activity
{
String tag="my result";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(tag,"I am in oncreate");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.v(tag,"I am in onDestroy");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.v(tag,"I am in onpause");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.v(tag,"I am in onRestart");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.v(tag,"I am in onresume");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.v(tag,"I am in onstart");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.v(tag,"I am in onstop");
}
}
運行它並檢查logcat。按回來按鈕,然後檢查。再次啓動應用程序和
按呼叫按鈕,然後檢查logcat現在按返回按鈕,並再次檢查logcat。您可以輕鬆瞭解Activity的生命週期。
在很多現代手機中,最近的應用程序列表是一個活動,並且確實觸發。我已經在一些三星和LG手機上測試過了,分別是com.android.systemui
和com.lge.launcher2
。
這就是說,當你打開最近的應用程序屏幕時,看起來你不能依賴於接收onPause。我很好奇,看看有多少設備不給你 ...
您可以發佈你的onPause(代碼) – Raj 2012-02-10 10:16:10
看到:HTTP://stackoverflow.com/a/9190541/265167 – 2012-02-10 10:30:02