2010-02-22 114 views
0

我有一個基本的應用程序,包含文本輸入,微調器輸入和第二個微調器輸入,其數組取決於在選項菜單中更改的設置。如何在退出時保存活動狀態? Android

目前,當我按Home或按回車鍵時,在我的應用程序中,我要麼返回到桌面,要麼通過最近放入的舊輸入循環。

如何防止我的應用程序打開自身的多個實例,以便在任何給定的時間只有一個實例運行,然後如何將輸入的數據保存到輸入中,以及在我的選項菜單中選擇的設置?

我對Java有點新,所以我很抱歉如果這是一個簡單的問題。

回答

2

在你的acticity重寫onSaveInstanceState和onRestoreInstanceState。這些方法將允許您將數據保存到Bundle您也可以將數據保存到Preferences。在我的所有應用程序中,我都覆蓋onSaveInstanceState和onRestoreInstanceState以保存值並將其加載到Bundle。我還將數據保存到onResult中的首選項,並在onResume中加載首選項。此外,在的onCreate(捆綁savedInstanceState)我不喜歡這樣

if(savedInstanceState != null) 
    { 
     m_mainView.restoreInstanceState(savedInstanceState); 
    } 
    else 
    { 
     m_mainView.loadGameFromDatabase(getPreferences(MODE_PRIVATE)); 
    } 

這些做法一直爲我工作的檢查。

+0

你能給我提供一個示例嗎? – 2010-10-12 07:56:06

+0

當用戶通過按回或主頁按鈕顯式地存在應用程序時,不會調用'onSaveInstanceState'。這隻有在操作系統決定在沒有您的干預的情況下銷燬您的活動時才能使用。 – 2014-07-08 07:12:24

0

您必須在您的活動中使用重寫的方法,並將數據保存在某處(可能共享偏好)。 然後onResume您必須從持久性存儲中讀取它們並填充您的控件。

onSaveInstanceStaterestoreInstanceState不是你的朋友,當你想處理回來或主頁按下按鈕。