gobandroid icon indicating copy to clipboard operation
gobandroid copied to clipboard

autosave not persistant

Open smellymoo opened this issue 3 years ago • 16 comments

When the app is closed properly, game progress is lost. That seems like a serious problem.

smellymoo avatar Nov 22 '22 14:11 smellymoo

is this project still alive? I can probably help you debug the problem, I am a developer (got a 50+ million download app).

smellymoo avatar Nov 28 '22 17:11 smellymoo

don't ask to help. Just help ))) I'm just a user. But I see @ligi appearing from time to time and pulling some PRs.

ildar avatar Nov 28 '22 19:11 ildar

yea - also need to cut a new release soon

ligi avatar Nov 28 '22 19:11 ligi

awesome! :-)))

ildar avatar Nov 28 '22 20:11 ildar

just had a quick dig, I think it might be that you only have onpause, and android can skip onpause in certain cases?

smellymoo avatar Dec 08 '22 21:12 smellymoo

OnPause should actually never be skipped:

image

ligi avatar Apr 10 '23 20:04 ligi

Lol. Oh I remember being your level of optimistic about android, that passed about 5 years ago...

Read the android docs and you will quickly discover that it's all bs, they have fat warnings everywhere saying that they may not happen.

The android life cycle is a great idea, but they didn't implement it probably. Now it's garbage. Basically I have seen most parts skipped, or called twice, or called out of order (when there is more than one activity) 🤦

There are different ways to deal with this, mine was to not trust all the life cycle calls, and feed them into my own generic handler of state, then that keeps track of It's own state and calls my own start or stop functions. This then debounces and allows android to forget to call things.

At the very minimum you need to combine onPause and onStop (and maybe onSaveInstanceState() ) to get anything reliable.

smellymoo avatar Apr 11 '23 06:04 smellymoo

I call your photo and raise you...

Screenshot_20230411_080106

smellymoo avatar Apr 11 '23 07:04 smellymoo

The worst of it is:

onPause() may be called unexpectedly if the activity is partially obscured by a system dialog or if the system needs to reclaim resources.

onResume() may be called unexpectedly if the activity was partially obscured by a system dialog or if the system needed to reclaim resources.

onSaveInstanceState() may not be called if the activity is destroyed unexpectedly, such as during a low-memory situation or a process death.

onStop() may be called unexpectedly if the system needs to reclaim resources, or if the activity is partially obscured by a system dialog.

smellymoo avatar Apr 11 '23 07:04 smellymoo

can you point me to where in the docs it states onPause might not be called?

ligi avatar Apr 11 '23 10:04 ligi

Screenshot_20230411_132947_Firefox.jpg

I'm on my phone right now. That is one example. But honestly, if you don't want to fix it, that's on you. Done my part.

smellymoo avatar Apr 11 '23 11:04 smellymoo

I am sorry. I was having a bad day and you were looking at the finger pointing rather than what it was pointing at.

Maybe just call it a feature not a bug? when you put your phone down it's non-deterministic if you still have your game when you go back, gives you a little gambling kick... also if you are losing the game, then it's like "oh shit, it cleared itself, oh well, shall we start again?"

smellymoo avatar Apr 19 '23 08:04 smellymoo

Thanks - no I want to fix it - guess I just do the saving after each move then - I think this should solve the problem.

ligi avatar Apr 19 '23 08:04 ligi

that is an easy and robust solution.

Other ideas would be:

  • running a background service (pain in the bum).
  • funnelling all of the possible ones (onPause, onStop, and onSaveInstanceState) into save, with debounce logic.
  • timer based pause (this would be an optimization on top of your solution)
  • ???

smellymoo avatar Apr 19 '23 09:04 smellymoo

Hi everyone, I'm still here, an apology for closing this project. Stop, I'll restart it. If it's still not there, let me know or if you can restart it, go ahead. On the other hand, I thank everyone for their support.

37elivan73 avatar May 02 '23 07:05 37elivan73

Hi everyone, I'm still here, an apology for closing this project. Stop, I'll restart it. If it's still not there, let me know or if you can restart it, go ahead. On the other hand, I thank everyone for their support.

37elivan73 avatar May 02 '23 07:05 37elivan73