2010-02-22 39 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不是你的朋友,当你想处理回来或主页按下按钮。