我可以得到一个服务从内共享偏好数据?(Can I get data from shared pref

2019-07-04 03:36发布

我正在开发一个Android应用程序。 我使用的Android 2.2

在我的应用我获取GPS数据和发送它与1小时的时间间隔来服务。 如果从应用程序的用户退出时也工作(这是必需的)。

我使用的是2个服务(用户自定义),一个用于捕获GPS数据等发送到服务器。

在这里,我怀疑

  • 在服务中,我们可以使用共享偏好。

  • 如果我们存储在应用程序的任何活动中共享偏好的任何数据,我们将能够使用这些数据服务与共享偏好的帮助?

Answer 1:

您可以访问默认共享偏好的实例,这是在所有的共享ActivityService ,通过调用类PreferenceManager.getDefaultSharedPreferences(Context context)

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

这是伟大的存储简单的原语(如布尔)或序列化对象。 但是,如果你拍摄了很多位置数据的,你可以考虑使用SQLite数据库来代替。



Answer 2:


我找到解决方案。
内部服务我们调用下面的方法来获取共享偏好

myapp.bmodel.getApplicationContext().getSharedPreferences("myPrefs_capture_gps_per_hour", Context.MODE_PRIVATE);


在上面的代码MyApp的是从应用程序产生的应用类的一个对象



Answer 3:

你需要一个上下文可以访问共享偏好。 最好的办法是创造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()添加或更改的喜好了!)



Answer 4:

是的Shivkumar,你,你正在使用你的活动可以使用您的共享偏好任何一种服务正常的。

相似

SharedPreferences preferences = getSharedPreferences("<PrefName>",
            MODE_PRIVATE);


Answer 5:

有两种方法来创建的实例SharedPreference

情况1:

SharedPreferences preferences = activity.getSharedPreferences("<PrefName>", MODE_PRIVATE);

案例2:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

如果您即使在不同的地方创建具有相同的名称(案例1)或相同的情况下(情况2)优先注意,它仍然是相同的,并且可以共享数据,很明显。



文章来源: Can I get data from shared preferences inside a service?