保存所有数据信息的最佳方法暂停

时间:2018-02-09 10:55:18

标签: java android

我正在创建一个应用程序,我想创建一个选项来暂停应用程序活动并转移到另一个活动,这将允许返回并恢复游戏 我的应用程序是由一个联系几个变量和一些其他较小的类的类构建的,我想知道保存所有这些数据的最佳方法是什么才能让它恢复到恢复并继续游戏? 游戏内置:

public class snake {
    int[][] board;
    part head;
    LinkedList<part> full = new LinkedList<part>();
    box box ;
    int count;
    int currx,curry;
}

3 个答案:

答案 0 :(得分:0)

当您的活动失去焦点时,会调用onSaveInstanceState()。这是保存你的州的地方:

private static final String GAME_STATE_KEY = "game_state";

private snake state;

@Override
public void onSaveInstanceState(Bundle outState) {

    super.onSaveInstanceState(outState);        

    outState.putSerializable(GAME_STATE_KEY, state);
}

当用户导航回您的活动时,您可以在onCreate()中恢复状态。请参阅activity lifecycle以供参考。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {

    if (savedInstanceState != null) {
        state = (snake) savedInstanceState.getSeriazable(GAME_STATE_KEY);
    }
    else {
        state = new snake();
    }
}

当然,您需要制作snake以及其中包含的其他自定义类(partbox),Serializable。例如,class snake implements Serializable

答案 1 :(得分:-1)

有两种方法可以在android中以捆绑形式存储数据:

  • 在android中共享首选项保存新的包,并以onStart()方法保存当前状态并在onResume()中恢复
  • 将状态保存在 onSaveInstanceState

这些方法适用于android中的方向。我认为这是有效的:

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
      super.onSaveInstanceState(savedInstanceState);        
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);   
    }

答案 2 :(得分:-1)

您可以使用几种方法:

SQLite,SharedPreferences,FileInput和FileOutput Streams,也许只是一个简单的意图,因为你想要保存你的活动。

尝试这个简单的意图标志:

&#13;
&#13;
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
OR
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Then use
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
&#13;
&#13;
&#13;

尽管你和应用程序中的内容一样,为了避免任何行为,请使用SharedPreferences,而只在应用程序被关闭或销毁时保存