我创建了一个服务,当用户将小部件放在主屏幕上时,该服务会写下一些与小部件相关的信息(这些信息是从confutation activity中提取的)。我还记录了用户设置的小部件数量。用户移除小部件后,我会在共享首选项中删除该信息。
我的经验是,如果用户快速执行以下操作:放置两个小部件,然后删除一个,再放置一个,共享首选项文件中的值就会不一致。有时可以正常工作,但大多数情况下,我会卡在错误的值上。
我使用apply(),我尝试过commit但出现了相同的问题。我存储在共享首选项中的值对于系统的工作非常重要,如果没有这些值,小部件就无用了,因为它们是基于用户配置在互联网上备份的信息,并将其写入首选项中。
是否切换到数据库解决方案更可靠?或者有其他可行的解决方案可以解决这个“竞态条件”吗?(也许强制采用自己的同步机制,但据我从文档中所理解的,apply()已经同步了,读/写应该首先进入RAM,这应该使它快速运行,并且我不应该遇到此类问题,因为用户无法在2-3秒内快速删除小部件并放置一个新的!)
我的经验是,如果用户快速执行以下操作:放置两个小部件,然后删除一个,再放置一个,共享首选项文件中的值就会不一致。有时可以正常工作,但大多数情况下,我会卡在错误的值上。
我使用apply(),我尝试过commit但出现了相同的问题。我存储在共享首选项中的值对于系统的工作非常重要,如果没有这些值,小部件就无用了,因为它们是基于用户配置在互联网上备份的信息,并将其写入首选项中。
是否切换到数据库解决方案更可靠?或者有其他可行的解决方案可以解决这个“竞态条件”吗?(也许强制采用自己的同步机制,但据我从文档中所理解的,apply()已经同步了,读/写应该首先进入RAM,这应该使它快速运行,并且我不应该遇到此类问题,因为用户无法在2-3秒内快速删除小部件并放置一个新的!)