先来复现下场景吧
问题出现在花哪儿接入 One Step 后,
1.用户启动花哪儿并不退出,切换到后台
2.用户使用 One Step 或 Android 的分享功能将信息添加账单到花哪儿,返回桌面
3.用户重新从桌面进入花哪儿
诶 ?不对啊,怎么没添加上?
其原因是因为 Android 系统在使用 One Step 或者 Share 时,创建了一个新的花哪儿主界面实例,在那个新的主界面实例中,是添加成功了的,并在数据库中添加了新的账单,然而,用户回到桌面通过点击图标恢复之前的花哪儿主界面实例,此界面实例并没有更新新的数据,所以看起来是没有记录上,实际上此时推出软件(Back)后重新打开花哪儿可以看到新记录是有添加的。
有点乱?看下边的图吧
其本质的问题出现在调用创建了新的花哪儿实例导致的原先启动的花哪儿实例没有更新
这个问题可以通过将主界面设置为单例来进行解决,具体方法如下:
在 AndroidManifest.xml 中,主界面部分添加如下代码:
<activity
android:name=".xxxActivity"
android:launchMode="singleTop" />
launchMode 是设置一个 Activity 的启动方式的,singleTop 代表了系统会寻找是否有一个 xxxActivity 实例正位于栈顶,如果有则不再生成新的,而是直接使用。
上述代码基本解决了这个问题,当然了花哪儿中还应用到了别的手段阻止类似的问题发生,当然 Android 开发过程中也不是风调雨顺的,还有更多的坑有待我们去探索和完善,我还会在此文集中不断更新,与大家分享这些问题以及解决方案,也欢迎大家多多支持和讨论。
如果这篇文章对你有所帮助,也希望你可以点一下下边的喜欢,如果有什么问题也可以在评论区与我讨论。