2012-02-10 79 views
5

當文檔「onPause」被調用時,當:爲什麼在以下情況下不會調用「onPause」?

當系統即將開始恢復以前的活動時。

相比「的onStop」,所不同的是:

當活動不再對用戶可見調用,因爲其他活動已經恢復並且覆蓋這一個。

但是,當我長按HW-Home鍵和「最近使用的應用」出現時, 了「的onPause」不叫。

此時,我無法長時間與原始活動 進行互動,但仍然可見。

我很困惑這種情況。 請幫忙解釋一下。

非常感謝。 BR, 亨利

+0

您可以發佈你的onPause(代碼) – Raj 2012-02-10 10:16:10

+0

看到:HTTP://stackoverflow.com/a/9190541/265167 – 2012-02-10 10:30:02

回答

7

實際發生這種情況是因爲長時間按住Home鍵時,沒有任何活動正在啓動。 onPause/onStop僅在您選擇「最近使用的應用程序」列表中顯示的其中一個應用程序時纔會被調用。

的onPause()的文檔是很清楚的:

調用當活動即將 到背景活動生命週期的一部分,但還沒有(還)被殺害。

+0

謝謝,MobileCushion, 你的回答是正確的。 關鍵是「最近的應用程序」不會被添加到應用程序堆棧中,因此結果是 。 – Henry 2012-02-22 06:59:52

-1

當你調出最近使用的應用調用OnStop方法被調用,調用OnStop方法被立即調用作爲活動的UI不是重點,因爲這樣

0

@Henry請嘗試自己通過測試應用程序的流程。創建一個活動,其中覆蓋所有方法並在所有方法下打印日誌。流程是onCreate >> onStart/restart >> onResume,當你按Home鍵或開始任何新的活動,然後它調用onPause >> onStop,如果你完成你的應用程序,那麼你的應用程序是銷燬/完成,所以在哪裏混亂。

0

這是官方文件說什麼onPause()

調用當活動即將 到背景活動生命週期的一部分,但還沒有(還)被殺害。與onResume()的 相對應。

當活動B是活性的前推出,這個回調將 可以在A,B調用不會直到A的的onPause創建()返回,所以 一定不要做任何冗長這裏。

詳細信息please see this

3
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的生命週期。

2

在很多現代手機中,最近的應用程序列表是一個活動,並且確實觸發。我已經在一些三星和LG手機上測試過了,分別是com.android.systemuicom.lge.launcher2

這就是說,當你打開最近的應用程序屏幕時,看起來你不能依賴於接收onPause。我很好奇,看看有多少設備不給你 ...

相關問題