Android 我们可以也应该在非UI线程上提交SharedReference,如果是,如何提交?

Android 我们可以也应该在非UI线程上提交SharedReference,如果是,如何提交?,android,multithreading,sharedpreferences,Android,Multithreading,Sharedpreferences,我正在制作一个应用程序,它必须在运行时保存和提取数据,而SharedReferences使我的动画滞后。那么,有没有一种方法可以在非UI线程上保存和检索数据呢 或者我的方法有什么问题吗 private void difficultyHandler(){ sharedPref = this.getSharedPreferences(getString(R.string.lScore),Context.MODE_PRIVATE); difficulty = sharedPr

我正在制作一个应用程序,它必须在运行时保存和提取数据,而SharedReferences使我的动画滞后。那么,有没有一种方法可以在非UI线程上保存和检索数据呢

或者我的方法有什么问题吗

    private void difficultyHandler(){
    sharedPref = this.getSharedPreferences(getString(R.string.lScore),Context.MODE_PRIVATE);
    difficulty =  sharedPref.getInt(getString(R.string.difficultyController),0);
    if (times >= 1){

        long latestScore1 = sharedPref.getLong(getString(R.string.lScore1),0);
        long latestScore2 = sharedPref.getLong(getString(R.string.lScore2),0);
        editor = sharedPref.edit();
        editor.putLong(getString(R.string.lScore1),score);
        editor.putLong(getString(R.string.lScore2),latestScore1);


        if(latestScore1 >= 60 && latestScore2 >=60 && latestScore1 < 140 && latestScore2 <140){
            difficulty = 2;
        }else if (latestScore1 < 60 && latestScore2 < 60){
            difficulty = 1;
        }else if(latestScore1 >= 140 && latestScore2 >=140){
            difficulty = 3;
        }
        editor.putInt(getString(R.string.difficultyController),difficulty);
        editor.commit();
    }
还有一种方法是这样的

有没有办法将整个方法放到另一个线程上

基本上我想解决滞后的问题

那么,有没有一种方法可以在非UI线程上保存和检索数据呢

SharedReference被缓存。第一次尝试访问给定的SharedReferences(例如GetSharedReferences)时,将出现磁盘I/O。欢迎您在需要首选项之前的某个时间在后台线程上执行此操作

您可以调用apply而不是commit,以在框架提供的后台线程上持久化对SharedReference的更改

那么,有没有一种方法可以在非UI线程上保存和检索数据呢

SharedReference被缓存。第一次尝试访问给定的SharedReferences(例如GetSharedReferences)时,将出现磁盘I/O。欢迎您在需要首选项之前的某个时间在后台线程上执行此操作


您可以调用apply,而不是commit,在框架提供的后台线程上持久化对SharedReferences的更改。

SharedReferences使事情变得非常缓慢,首先,我想知道您在SharedReferences中保存了什么类型的数据以及数据量,看看您的方法,这并不是很重要。@nobleG我有32个读写事件,正在API 14级别的Xperia E设备上运行。SharedReferences会让事情变得很慢吗,首先,我想知道您在SharedReferences中保存了什么类型的数据和多少数据,看看您的方法,这并不是很重要。@nobleG我有32个读写事件,运行在API 14级的Xperia E设备上。为了进一步澄清jay的区别,apply与commit相同,后者返回一个布尔结果。为了进一步澄清jay的区别,apply与commit相同,后者返回一个布尔结果。