簡體   English   中英

暫停時保存所有數據信息的最佳方法

[英]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以及它包含的其他自定義類( partbox ), Serializable 例如, class snake implements Serializable

有兩種方法可以在Android中以捆綁形式存儲數據:

  • android中的共享首選項將保存新的捆綁包,並將當前狀態保存在onStart()方法中,並在onResume()還原
  • 將狀態保存在onSaveInstanceState中

這些方法適用於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM