Должен ли я загружать значения из sharedpreferences в onCreate или onResume? - PullRequest
0 голосов
/ 27 сентября 2018

Я храню значения textview в sharedpreferences, и я не уверен загрузить их в 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
  }
}

1 Ответ

0 голосов
/ 27 сентября 2018

Любой из них должен работать.

onCreate() вызывается, если действие полностью завершается, т. Е. Вы закрываете приложение из недавних.

onResume() также вызывается сразу после onCreate(),а также в любое время, когда действие снова выходит на передний план, то есть идет домой, а затем открывает приложение из последних.

...