在savedInstanceState中存储Date的最佳方法是什么?

Tom*_*hen 1 time storage android store date

我使用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));
}
Run Code Online (Sandbox Code Playgroud)

这样,当我的视图被破坏并重新创建时,我可以通过旋转屏幕来存储和检索日期值,这是主要问题.这有效,但我可以说这不高效.如果我存储更多这样的变量,则视图创建需要更长的时间(加载包含字符串和布尔值的10个变量需要几秒钟).

我想知道是否有更好的方法来做到这一点.任何建议都是受欢迎的.

Com*_*are 7

DateSerializable.停止将其转换为字符串.只需将其Bundle直接放入,使用putSerializable(),通过它检索getSerializable().

如果这不能解决您的基本性能问题,请使用开发工具(例如IDE中的方法跟踪)来确定您在哪里花费时间.