2014-02-13 29 views
0

晚上好!我需要創建一個應用程序,它將在用戶最小化後始終返回(例如,通過單擊HOME按鈕)。我想我會不得不增加與定時器服務,這將檢查活動是目前可見或不可見,並返回到App如果看不見總是回來android應用程序

  if(!App.isActivityVisible()){ 

       Intent intent = App.getCurrentIntent(); 
       if(intent != null){ 

        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent); 
       } 
      } 

但應用程序創建一個新的活動,但我想老活動...

但我認爲這是一個簡單的解決方案...

編輯

所以,我得到的是舊的活動,但是當我按下按鈕回來 - 我的應用程序處理的,但我想要以前的活動。

我用

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

編輯

是的,我找到了解決方案

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

+0

請您確認您是否想要再次打開該應用程序或在主頁按鈕被按下後執行其他操作? –

+0

如果您的活動存在,請使用http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT – 323go

回答

0

你不能保證甚至有一個活動重新創建。

無論您是否希望它停止,Android可以摧毀您的活動。你應該設計你的活動來正確處理這種行爲。默認的Activity lifecycle會給你想要的行爲,直到系統需要銷燬你的活動來釋放系統資源。

如果您在狀態下需要維護並重新創建活動時,應查看Saving Persisted State文檔。

如果你想實施某種長時間運行的操作,你應該考慮實施一個Service

閱讀文檔Intent.FLAG_ACTIVITY_NEW_TASK將揭示你爲什麼張貼不會做你所期望的代碼:

如果設置,這個活動將成爲這一歷史堆棧上一個新任務的開始。任務(從開始它到下一個任務活動的活動)定義用戶可以移動到的活動的原子組。

你不僅是重新創建一個放置在後臺一個老活動,但你是一個完全新的任務堆棧上啓動該活動的一個新實例。

0

您的問題可能與用於在清單中啓動活動和活動的launchMode的Intent標誌有關。

這可能是有用的:

How do you use Intent.FLAG_ACTIVITY_CLEAR_TOP to clear the Activity Stack?

基本上,雖然如果活動仍然會在用戶離開它(機器人可以摧毀它)的狀態,你無法控制,你應該如果Android沒有銷燬它,它能夠返回到它。

另外,要明白,你可能已經在做這件事,但在onStart或onResume中有代碼,即使Android沒有銷燬它,它也會顯示爲「重新啓動」。

即使活動已被銷燬,您也應該可以保存狀態,這樣即使Android銷燬它,對用戶來說也是他們留下的方式。

相關問題