Thanks for the suggestions both - they sound plausible. Yusuf, I like "creative", very polite :)
Anyway I'll try using finish() and see if it fixes the problem... Cheers Anna On Jul 24, 7:56 pm, "Yusuf T. Mobile" <[email protected]> wrote: > That's a creative way to work with Android lifecycle management. In > fact you don't need to tell Android to go to the Home page when the > user presses the back button. If you did nothing special when the user > pressed the back button, Android would call onPause() and go to the > previous Activity. > > Activities are like a stack. So when you call startActivity(), you are > telling Android "put this activity on top of mine". Instead, just wait > for Android to tell your Edit activity that it's about to go away > (from the back button which pops one activity off the stack, or the > home button which pops them all, or other causes), and save your data > in onPause(). You can then reload it in onResume() when Android tells > your activity to start back up. Incidentally, Android also calls > onResume() the very first time your activity is launched. > > In case you've not seen the activity lifecycle description, here it > is:http://developer.android.com/guide/topics/fundamentals.html#actlife > > Yusuf Saib > Android > ·T· · ·Mobile· stick together > The views, opinions and statements in this email are those of the > author solely in their individual capacity, and do not necessarily > represent those of T-Mobile USA, Inc. > > On Jul 24, 5:23 am, Anna PS <[email protected]> wrote: > > > > > Hi all, > > > This is an intermittent bug in one of my apps. I don't expect anyone > > to solve it immediately, but I'd appreciate any thoughts on how to > > start debugging! > > > So, my app lets users edit an item (in the EditPage activity). When > > they press the Back key, the desired behaviour is that it saves their > > edits and returns them to the home page (the HomeList activity). The > > code for this is below. It works fine. Except... > > > The bug is this. Some users report that sometimes when they reopen the > > application after a pause, they are seeing *not* the home page, where > > they left the application - but the previous edit activity. Crucially, > > they are also seeing the edit activity without their saved edits - > > effectively losing their most recent edits :( > > > I've been able to reproduce this myself. It only happens after the > > application hasn't been opened for a while. If I save something, > > minimize the application and reopen it straight away, it shows the > > HomeList activity just fine, and the edits have all been saved. But if > > I save something, leave it for a couple of hours and then reopen it, > > it shows the previous EditPage activity, without the saved edits (i.e. > > in the state that the EditPage activity was previously launched). > > > Any ideas, anyone? I had wondered whether it was due to the Back > > button being used to return the user to the HomeList activity - maybe > > Android thinks that the Back button means that the HomeList is not the > > most "recent" activity, instead the EditPage is. I'd like to carry on > > using the Back button if possible, though. And in particular, I'm > > puzzled why it only happens after the app has been idle for an hour or > > so, and not immediately? Is it something to do with Android's memory > > management? > > > As I say, would appreciate any tips on how to debug - quite baffled at > > the moment! > > > Thanks very much, > > > Anna > > > ---------- > > > Code used in the EditPage activity to save edits when the Back key > > gets pressed. Works fine, apart from bug described above. > > > // Save everything when the Back key gets pressed > > public boolean onKeyDown(int keyCode, KeyEvent event) { > > if (keyCode == KeyEvent.KEYCODE_BACK) { > > if (saveEdits()) { > > Context context = getApplicationContext(); > > CharSequence text = "'" + title + "' has > > been saved"; > > int duration = Toast.LENGTH_SHORT; > > Toast toast = Toast.makeText(context, text, > > duration); > > toast.show(); > > Intent i = new Intent(EditPage.this, > > HomeList.class); > > startActivity(i); > > } else { > > // failed to save! > > showDialog(SAVE_WARNING); > > } > > } > > return false; > > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] 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 -~----------~----~----~----~------~----~------~--~---

