[英]Best way to save all the data info onPause
我正在制作一個應用程序,我想創建一個選項來暫停該應用程序的活動,然后轉到另一個活動,該活動可以返回並繼續游戲。我想知道保存所有這些數據以使其恢復恢復並繼續游戲的最佳方法是什么? 游戲建立於:
public class snake {
int[][] board;
part head;
LinkedList<part> full = new LinkedList<part>();
box box ;
int count;
int currx,curry;
}
當您的活動失去焦點時,將調用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()
恢復狀態。 請參閱活動生命周期以供參考。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
if (savedInstanceState != null) {
state = (snake) savedInstanceState.getSeriazable(GAME_STATE_KEY);
}
else {
state = new snake();
}
}
當然,您將需要制作snake
以及它包含的其他自定義類( part
, box
), Serializable
。 例如, class snake implements Serializable
。
有兩種方法可以在Android中以捆綁形式存儲數據:
onStart()
方法中,並在onResume()
還原 這些方法適用於android中的定位。 我認為這是可行的:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
您可以使用幾種方法:
SQLite,SharedPreferences,FileInput和FileOutput流,也許只是希望暫停您要保存的活動的簡單意圖。
試試這個簡單的意圖標志:
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); OR intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); Then use intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
只要您在應用程序內部就可以避免任何事情,請使用SharedPreferences代替,僅在關閉或銷毀應用程序時保存
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.