是重复使用Android共享首选项存储会影响性能吗?

Amo*_*til 3 android sharedpreferences android-sharedpreferences

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

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   
        ------
        ------ 
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,sharedPreference以重复的方式使用.

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

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

Tim*_*Tim 5

使用上面的代码,sharedPreference以重复的方式使用.我只是想知道这是不是很好的做法?

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

同样适用于filterOne.如果该值是常量,因为它不会更改,您应该只在onLocationChanged调用之外检索一次.


所以回答你的问题

是重复使用Android共享首选项存储会影响性能吗?

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