我正在开发一个Android应用程序。 我使用的Android 2.2
在我的应用我获取GPS数据和发送它与1小时的时间间隔来服务。 如果从应用程序的用户退出时也工作(这是必需的)。
我使用的是2个服务(用户自定义),一个用于捕获GPS数据等发送到服务器。
在这里,我怀疑
在服务中,我们可以使用共享偏好。
如果我们存储在应用程序的任何活动中共享偏好的任何数据,我们将能够使用这些数据服务与共享偏好的帮助?
我正在开发一个Android应用程序。 我使用的Android 2.2
在我的应用我获取GPS数据和发送它与1小时的时间间隔来服务。 如果从应用程序的用户退出时也工作(这是必需的)。
我使用的是2个服务(用户自定义),一个用于捕获GPS数据等发送到服务器。
在这里,我怀疑
在服务中,我们可以使用共享偏好。
如果我们存储在应用程序的任何活动中共享偏好的任何数据,我们将能够使用这些数据服务与共享偏好的帮助?
您可以访问默认共享偏好的实例,这是在所有的共享Activity
和Service
,通过调用类PreferenceManager.getDefaultSharedPreferences(Context context)
:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
这是伟大的存储简单的原语(如布尔)或序列化对象。 但是,如果你拍摄了很多位置数据的,你可以考虑使用SQLite数据库来代替。
我找到解决方案。
内部服务我们调用下面的方法来获取共享偏好
myapp.bmodel.getApplicationContext().getSharedPreferences("myPrefs_capture_gps_per_hour", Context.MODE_PRIVATE);
在上面的代码MyApp的是从应用程序产生的应用类的一个对象
你需要一个上下文可以访问共享偏好。 最好的办法是创造MyApplication
作为后裔Application
类,实例那里的preferences
,并在您的应用程序的其它部分使用它们MyApplication.preferences
:
public class MyApplication extends Application {
public static SharedPreferences preferences;
@Override
public void onCreate() {
super.onCreate();
preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);
例如,如果你需要你的喜好访问其他地方,你可以调用这个阅读喜好:
String str = MyApplication.preferences.getString( KEY, DEFAULT );
或者你可以把这个东西保存到首选项:
MyApplication.preferences.edit().putString( KEY, VALUE ).commit();
(不要忘记调用commit()
添加或更改的喜好了!)
是的Shivkumar,你,你正在使用你的活动可以使用您的共享偏好任何一种服务正常的。
相似
SharedPreferences preferences = getSharedPreferences("<PrefName>",
MODE_PRIVATE);
有两种方法来创建的实例SharedPreference
:
情况1:
SharedPreferences preferences = activity.getSharedPreferences("<PrefName>", MODE_PRIVATE);
案例2:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
如果您即使在不同的地方创建具有相同的名称(案例1)或相同的情况下(情况2)优先注意,它仍然是相同的,并且可以共享数据,很明显。