2010-11-08 85 views
3

我有一個啓動畫面的Android應用程序。安卓活動與啓動畫面重新啓動和後退按鈕神祕

此初始屏幕預加載數據,完成時啓動應用程序的主要活動並完成(通過完成()調用)。

只要應用程序沒有完全死亡,這種方式就可以很好地工作。所以,我通常可以像往常一樣在不同的任務之間來回切換:當我從一個子活動中離開應用程序並在我接受這個子活動後很快返回。

現在,當我離開這個子活動並做了一些其他的東西一段時間不可避免的這個應用程序進程被操作系統殺死。

到目前爲止沒有問題。現在我預計Android會不知道我的預加載(如果數據未預加載,則需要更長的時間或不顯示某些字體,但Android無法意識到我正在預加載的事實),以恢復子活動從一個捆綁。但啓動畫面活動已啓動。

所以,我說,那很好,然後......啓動畫面活動在所有啓動器/主要活動之後。現在,我所擁有的真實祕密如下。

當我從這個新加載的啓動畫面按下後退按鈕時,我將看到我在應用程序被殺之前離開的子活動。我真的不明白這一點。很明顯,Android DID會保存子活動的狀態(及其歷史堆棧)以便重新加載,但不是重新加載它,而是選擇啓動啓動屏幕,通過此子活動(我在任務被殺之前離開任務)向後退一步活動堆棧。

爲什麼會發生這種情況?

當進程沒有被殺死時,我可以切換回我離開的地方。當它死亡時,我不能(但仍然恢復了該應用的整個早期歷史)。我知道Android在後一種情況下必須加載狀態等,但這應該不是問題,並且默認情況下會自動執行(根據文檔)。

P.S.我沒有做任何事情。默認啓動標誌,不覆蓋狀態恢復方法等。

+1

試圖按照你的步驟在這裏... SubActivity - >初始屏幕< - SubActivity,離開應用程序,回來,它顯示初始屏幕?我假設SubActivity中有一些邏輯顯示了啓動畫面。它重新加載時是否有可能再次觸發它? – 2010-11-08 18:15:02

回答

2

嘿試試這對我的作品我們必須採取一個布爾標誌,所以它會處理這個問題,當你在加載閃屏時按下返回按鈕它會停止該活動,所以自動重新加載問題將解決希望它有幫助爲你。

public class Main extends Activity { 

    ImageView imageLogo; 
    LinearLayout myLayout; 
    private Thread splashTread; 
    private boolean isBackPressed = false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 

     splashTread = new Thread() { 
      public void run() { 
       try { 
        sleep(3000); 
        if (!isBackPressed) { 

         Intent myIntent = new Intent(
           "src.SplashScreen.com.MENU"); 
         startActivity(myIntent); 

        } 

       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 

       finally { 

        finish(); 

       } 
      } 

     }; 

     splashTread.start(); 

    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
      isBackPressed = true; 
      finish(); 
     } 
     return super.onKeyDown(keyCode, event); 

    } 

} 
0

這是一個已知的Android問題,帶有兩個應用程序實例。該問題已經正式跟蹤herehere

解決方法是here

+0

謝謝,這看起來像我遇到的問題。當我找到一些時間時,我會嘗試你的解決方法。再次,非常感謝。 – ixampal 2010-11-10 13:13:01

+0

是的,我沒有機會試用您的解決方法,但我測試了是否是導致我的問題的問題。 – ixampal 2010-11-10 13:20:18