我应该从 onCreate 或 onResume 中的 sharedpreferences 加载值吗?
Should i load values from sharedpreferences in onCreate or onResume?
我将 textview 值存储在 sharedpreferences 中,但我不确定是否将它们加载到 oncreate 或 onresume 中?
我想在用户关闭应用程序然后再次打开时再次显示这些值。
StorageUtil 是一个 class 管理我的共享首选项的工具。
我想将搜索栏值存储在 sharedpreferences 中。
搜索栏值
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 重新进入前台,即回家然后从“最近”打开应用程序。
我将 textview 值存储在 sharedpreferences 中,但我不确定是否将它们加载到 oncreate 或 onresume 中?
我想在用户关闭应用程序然后再次打开时再次显示这些值。
StorageUtil 是一个 class 管理我的共享首选项的工具。
我想将搜索栏值存储在 sharedpreferences 中。
搜索栏值
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 重新进入前台,即回家然后从“最近”打开应用程序。