executeOfflineCommand skips a command while executing from storage on Android

*爱你&永不变心* 提交于 2019-12-01 08:31:46

问题


I have to execute "Start" and "Finish" Commands in the Sequential Order in my program and synchronize everything at the end. So I'm inserting the Offline commands in the order first and assuming they will execute in the same order. I'm using "List" with "Iterator" for this.

Problem here is: Finish Command will be missed execution in some strange scenarios in the middle and "start" commands will execute next to each other and sending all wrong data and mapped it in a wrong way.

As action will get ID when command executes at the server, I'm keeping tempory id's to map the offline commands in storage(localID). Instaead of List if I use anyother collection will this gets any better? It is hard to reproducing this on simulator. Please review both scenarios and advise where can this approaches go wrong. Thanks

I will add the OfflineCommands into the List and save in the Storage. After that user can perform delete delete operation in the App so that I will retrieve the list and remove the commands which got deleted from storage so now I have filtered list.


回答1:


Don't synchronize.

That's nearly always a mistake in Codename One. Your code deals with the UI so it should be on the EDT and Display.getInstance().isEDT() should be true.

My guess is that one of the commands in the middle uses one of the following invokeAndBlock() derivatives:

  • addToQueueAndWait
  • Modal dialogs

Which triggers a second round of synchronization to run.

You can trace that by reproducing the issue and checking which command in the list is specifically there at each time. Then fix that command so it doesn't block in this way.

Another approach to fixing it is to remove the list immediately when you start processing which will prevent a duplicate execution of commands.



来源:https://stackoverflow.com/questions/51092728/executeofflinecommand-skips-a-command-while-executing-from-storage-on-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!