Лучшая практика когда-либо
Создать интерфейс с помощью PreferenceManager:
// Interface to save values in shared preferences and also for retrieve values from shared preferences
public interface PreferenceManager {
SharedPreferences getPreferences();
Editor editPreferences();
void setString(String key, String value);
String getString(String key);
void setBoolean(String key, boolean value);
boolean getBoolean(String key);
void setInteger(String key, int value);
int getInteger(String key);
void setFloat(String key, float value);
float getFloat(String key);
}
Как использовать с Activity / Fragment:
public class HomeActivity extends AppCompatActivity implements PreferenceManager{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout_activity_home);
}
@Override
public SharedPreferences getPreferences(){
return getSharedPreferences("SP_TITLE", Context.MODE_PRIVATE);
}
@Override
public SharedPreferences.Editor editPreferences(){
return getPreferences().edit();
}
@Override
public void setString(String key, String value) {
editPreferences().putString(key, value).commit();
}
@Override
public String getString(String key) {
return getPreferences().getString(key, "");
}
@Override
public void setBoolean(String key, boolean value) {
editPreferences().putBoolean(key, value).commit();
}
@Override
public boolean getBoolean(String key) {
return getPreferences().getBoolean(key, false);
}
@Override
public void setInteger(String key, int value) {
editPreferences().putInt(key, value).commit();
}
@Override
public int getInteger(String key) {
return getPreferences().getInt(key, 0);
}
@Override
public void setFloat(String key, float value) {
editPreferences().putFloat(key, value).commit();
}
@Override
public float getFloat(String key) {
return getPreferences().getFloat(key, 0);
}
}
Примечание: Заменить ваш ключ SharedPreference с SP_TITLE.
Примеры:
Сохранить строку в shareperence:
setString("my_key", "my_value");
Получить строку из shareperence:
String strValue = getString("my_key");
Надеюсь, это вам поможет.
Он генерирует эквивалент:
String s = new StringBuilder("abc")
.append(methodReturningAString())
.append("ghi")
.append(anotherMethodReturningAString())
.append("omn")
.append("blablabla")
.toString();
Достаточно умен для предварительного объединения статических строк (например, . Вы можете назвать использование «omn» + «blablabla»
) StringBuilder
«уловкой производительности», если хотите. Это определенно лучше для производительности, чем выполнение пяти конкатенаций, приводящих к появлению четырех ненужных временных строк. Кроме того, использование StringBuilder улучшило производительность (я думаю) Java 5; до этого использовался StringBuffer.
Изменить : как указано в комментариях, статические строки предварительно объединяются, только если они находятся в начале объединения. Иначе нарушится порядок операций (хотя в данном случае я думаю, что Sun могла бы это оправдать). Итак, учитывая это:
String s = "abc" + "def" + foo() + "uvw" + "xyz";
он будет скомпилирован следующим образом:
String s = new StringBuilder("abcdef")
.append(foo())
.append("uvw")
.append("xyz")
.toString();