【发布时间】:2012-04-27 07:51:57
【问题描述】:
如何在应用程序中进行更改,以便在应用程序重新启动时所有设置保持不变(例如,如果我从应用程序中选择了振动,那么当应用程序未运行时,如果我的手机在应用程序重新启动时处于振铃模式,它会将自身设置为振动)?
【问题讨论】:
如何在应用程序中进行更改,以便在应用程序重新启动时所有设置保持不变(例如,如果我从应用程序中选择了振动,那么当应用程序未运行时,如果我的手机在应用程序重新启动时处于振铃模式,它会将自身设置为振动)?
【问题讨论】:
实际上有多种方法可以持久化更改。 Android documentation 更详细地涵盖了所有这些,但本质上是这五种方式。最简单的可能是SharedPreferences。
Shared Preferences
将私有原始数据存储在键值对中。
Internal Storage
在设备内存中存储私有数据。
External Storage
将公共数据存储在共享的外部存储上。
SQLite Databases
将结构化数据存储在私有数据库中。
Network Connection
使用您自己的网络服务器将数据存储在网络上。
【讨论】:
使用共享首选项。您可以放置键值对并在需要时检索。
【讨论】:
您需要将这些设置存储在数据库中。使用方法见Using Databases
【讨论】:
使用共享首选项
保存您的设置:
SharedPreferences prefs = getSharedPreferences("myprefs",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("email", "my_email@email.com");
editor.putString("name", "Albert");
editor.commit();
检索它们:
SharedPreferences prefs = getSharedPreferences("myprefs",Context.MODE_PRIVATE);
String email = prefs.getString("email", "default@email.com");
【讨论】:
你可以做的就是创建一个 PreferenceActivity 像:
public class Prefs extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
}
}
在 res/xml 文件夹中添加带有此内容的preference.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="General" >
<CheckBoxPreference
android:key="notification"
android:summaryOff="You will not receive any notification"
android:summaryOn="Notifications are sent to your device"
android:title="Get notification" />
</PreferenceCategory>
</PreferenceScreen>
在你的代码中你现在可以做:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Boolean sendNotification = prefs.getBoolean("notification", false);
【讨论】: