I did mine the wrong way - by having 1 activity that flips the visible view and knows its state.
For my next game I am having a Game Menu activity and then the Game activity. This will keep things much more clean and is easier to work with state management. I used the single instance model which I believe is good for games (depending on the type of game) and that has some implications for lifecycle management. On Nov 3, 4:46 pm, AaronBC <[EMAIL PROTECTED]> wrote: > Okay, here's how I implemented the resume game function: > > In the onPause method I save the game state (Object) to a file: > > private void SaveGame() > { > FileOutputStream fileOutputStream = null; > ObjectOutputStream objOutStream = null; > try > { > fileOutputStream = openFileOutput(PlayActivity.SAVE_FILE_NAME, > Context.MODE_PRIVATE); > objOutStream = new ObjectOutputStream(fileOutputStream); > objOutStream.writeObject((Deck)this.gameDeck); > objOutStream.close(); > Log.v(this.getLocalClassName(), "writing file"); > } > catch (Exception FileNotFoundException) > { > Log.v(this.getLocalClassName(), "File not found exception!:" + > PlayActivity.SAVE_FILE_NAME); > } > > } > > In the onCreate() method I restore the game state from the file: > > try > { > fileInputStream = openFileInput(PlayActivity.SAVE_FILE_NAME);// > this.openFileInput(PlayActivity.SAVE_FILE_NAME); > objInStream = new ObjectInputStream(fileInputStream); > this.gameDeck = (Deck)objInStream.readObject(); > objInStream.close(); > displayCard = gameDeck.GetCurrentCard();} > > catch (Exception FileNotFoundException) > { > Log.v(this.getLocalClassName(), "File not found exception!:" + > PlayActivity.SAVE_FILE_NAME); > this.gameDeck = new Deck(); > displayCard = gameDeck.GetNextCard(); > > } > > I am using an ObjectOutput/ObjectInput stream to handle saving and > loading the card deck. A 1.8Kb file is created when I save the > object. This seems like a resource heavy implementation. Is there a > better way of doing this for an embedded application? > > Also, in order for the main menu to know whether a game has already > been started, it just checks whether the file exists or not: > protected void onStart() > { > String[] fileList,gameMenu; > super.onStart(); > fileList = this.fileList(); > gameMenu = mStrings; > for (String e: fileList) > { > if (e.equals(PlayActivity.SAVE_FILE_NAME)) > { > gameMenu = mStringsResume; > } > } > // Prepare the ListView > final ArrayAdapter<String> adapter = new > ArrayAdapter<String>(this, > android.R.layout.simple_list_item_1, gameMenu); > > setListAdapter(adapter); > > } > > Another question: Rather than using fileList() to determine if the > file exists, could I just try to open the file and catch the exception > if it doesn't exist, or is this more resource heavy as well? > > Thx for any input, > Aaron > > On Oct 29, 12:08 pm, AaronBC <[EMAIL PROTECTED]> wrote: > > > I'm writing a simplegameso I can learn more about android > > development. I need a little help designing themenusystem. When > > you start the application you will see a simplemenu: > > > Start NewGame > > ResumeGame(Dynamically shown after agamehas been started) > > Scoreboard > > Instructions > > About > > > When you click on "Start NewGame" it starts a new "Play" activity > > (This works fine) > > > The "ResumeGame" option should only be visible when agamehas > > already been started and the user returns to the mainmenu. How do I > > determine whether the "Play" activity has been started or not in order > > to display thismenuitem? Also, how do I handle the back button > > press when in the "Play" activity so that thegamestate is paused and > > not lost when returning to the mainmenu? > > > Example: > > Thegameapplication is started and the user sees the following screen > > > NewGame > > Scoreboard > > Instructions > > About > > > The user then taps NewGameand starts to play. In the middle of thegamethe > > user hits the back button (or receives a phone call, starts > > another app, etc.) and sees the following screen when returning to > > thegameapp: > > > NewGame > > ResumeGame > > Scoreboard > > Instructions > > About > > > The user either taps "NewGame" and starts a newgameor taps "ResumeGame" and > > continues where he left off. > > > How should I approach this using multiple Activities? > > > Thx, > > Aaron > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---