3

我的应用程序在 Android 服务中使用 LocationListener 来获取频繁更新的位置。应用程序有一些存储在共享首选项中的位置过滤器相关数据。要求是尽可能频繁地更新位置。我从听众的 onLocationChanged 中的 Shared Preference 中检索数据。这是我的代码

public class MyLocationListener implements LocationListener {
    public void onLocationChanged(final Location loc) {
        sharedPreferences =  PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        int filterOne = sharedPreferences.getInt("filter_data",100);
        ------
        ------
        //code to process location with filter   
        ------
        ------ 
    }
}

使用上述代码 sharedPreference 以重复方式使用。

我已经尝试将过滤器变量放在 onLocationChanged 之外,但是当服务重新启动时,值会丢失并设置为零。

我只是想知道这是好的做法吗?我应该使用其他选项吗?

4

1 回答 1

5

使用上述代码 sharedPreference 以重复方式使用。我只是想知道这是好的做法吗?

以重复的方式访问 SharedPreferences 是没有问题的。但是,在您的情况下,sharedPreferences每次事件触发时您都会重新初始化。您应该只在onCreate您的活动或onCreateView片段中执行一次。

同样适用于filterOne。如果该值是恒定的,因为它不会改变,那么您应该只在onLocationChanged调用之外检索一次。


所以回答你的问题

重复使用 Android Shared Preference 存储会影响性能吗?

是的,但这只是因为您每次都重新初始化它。如果你听从我的建议,对性能几乎没有影响。

于 2015-09-28T13:26:40.357 回答