java - 我应该在 onCreate 或 onResume 中从共享首选项加载值吗?

标签 java android sharedpreferences oncreate onresume

我将 textview 值存储在共享首选项中,但不确定将它们加载到 oncreate 还是 onresume 中?

我想在用户关闭应用程序然后再次打开它时再次显示这些值。

StorageUtil 是一个管理我的共享首选项的类。

我想将搜索栏值存储在共享首选项中。

搜索栏值

  mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            StorageUtil storageUtil = new StorageUtil(getApplicationContext());
            if (mediaPlayer != null && fromUser){
                lastSeekbarPos = progress;
                mSeekbarProgress = progress * 1000;
                mediaPlayer.seekTo(mSeekbarProgress);
            }
            //Store last SeekBar position in mSharedPreferences
            storageUtil.storeSeekbarProgress(lastSeekbarPos);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });

  songList = storageUtil.getSongs();
  songIndex = storageUtil.loadSongIndex();
  lastSeekbarPos = storageUtil.loadSeekbarProgress();

  if (songList != null && !songList.isEmpty() && songIndex != -1){
        lastSeekbarPos = storageUtil.loadSeekbarProgress();

        tvSongTitle.setText(songList.get(songIndex).getTitle());
        tvArtistName.setText(songList.get(songIndex).getArtist());
        mSeekbar.setProgress(lastSeekbarPos);
        loadAlbumArt();
        loadAlbumArtBottom();
        Log.i(TAG, "Data found in mSharedPreferences");
    }else{
        mSlideUpPanel.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN);
        tvSongTitle.setText("");
        tvArtistName.setText("");
    }

StorageUtil

public class StorageUtil {
  private final String STORAGE = "com.vince_mp3player.STORAGE";
  private SharedPreferences mSharedPreferences;
  private Context context;
  private SharedPreferences.Editor mEditor;

public StorageUtil(Context context){
    this.context = context;
}

public void storeSeekbarProgress(int seekbarprogress) {
    mSharedPreferences = context.getSharedPreferences(STORAGE, Context.MODE_PRIVATE);
    mEditor = mSharedPreferences.edit();
    mEditor.putInt("seekbarProgress", seekbarprogress);
    mEditor.apply();
}

public int loadSeekbarProgress() {
    mSharedPreferences = context.getSharedPreferences(STORAGE, Context.MODE_PRIVATE);
    return mSharedPreferences.getInt("seekbarProgress", -1);//return -1 if no data found
  }
}

最佳答案

两者都应该有效。

onCreate() 在 Activity 完全完成时调用,即您从“最近”中关闭应用程序。

onResume() 也会在 onCreate() 之后以及 Activity 重新进入前台(即回家然后打开应用程序)的任何时候调用来自最近的内容。

关于java - 我应该在 onCreate 或 onResume 中从共享首选项加载值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52526634/

相关文章:

java - 当我更改 ImageButton 图像时,没有实时更改

java - Android:在应用程序启动之间存储有序值列表

android - 具有不同上下文的共享偏好

java - 使用动态规划了解正则表达式字符串匹配

java - AsyncTask中的ProgressDialog仅在任务结束时短暂显示

java - JAVA中的行长度

android - 播放商店 alpha 测试下载链接不起作用

java - 查找字符串是否存在于数组中

android - AAPT 错误 : resource drawable/. .. 未找到

android - SharedPreferences.commit 失败,出现 java.io.IOException : No space left on device