【发布时间】:2016-12-22 19:17:36
【问题描述】:
我正在使用 onSaveInstanceState 方法来存储和检索片段内的局部变量。 我的一个片段中有以下代码(简化):
private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy - HH:mm");
private Date myDate;
public Date getDate() { return myDate; }
public void setDate(Date date) { this.myDate = date; }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main, container, false);
TextView tvDate = (TextView) rootView.findViewById(R.id.textview_date);
if (savedInstanceState != null) {
try {
myDate = dateFormat.parse(savedInstance.State.getString("DATE"));
catch (ParseException e) {
}
}
//myDate is being set by a different fragment using the setDate method
if (tvDate != null)
tvDate.setText(dateFormat.format(myDate));
return rootView;
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("DATE", dateFormat.format(myDate));
}
这样,当我的视图被破坏和重新创建时,我可以存储和检索日期值,例如通过旋转屏幕,这是主要问题。 这行得通,但我可以说这不是有效的。如果我像这样存储更多变量,则视图创建需要更长的时间(加载包含字符串和布尔值的 10 个变量需要几秒钟)。
我想知道是否有更好的方法来做到这一点。欢迎提出任何建议。
【问题讨论】:
-
难以置信。十个变量不算什么。与此同时,你在做什么困难的事情?
-
如果从
Bundle加载 10 个变量需要几秒钟时间,您的代码还有其他问题。
标签: android date time storage store