欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

由Actvity启动模式之SingleInstance引起的坑的反思

发布时间:2024/7/5 编程问答 68 豆豆
生活随笔 收集整理的这篇文章主要介绍了 由Actvity启动模式之SingleInstance引起的坑的反思 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

以前对于Activity的启动模式只限于文字说明理解的层面,但最近的一个问题让我对启动模式有了更深的了解。

Activity有四大启动模式:standard,singleTop,singleTask,singleInstance,这些启动模式的特点就不在这里细说,主要说一下SingleInstance这种启动模式的Activity启动其它模式的Activity的效果与可能出现的问题:

问题是这么描述的,A栈最顶层的一个Activity启动了一个启动模式为SingleInstance的Activity-B,那么如果B启动一个启动模式为standard的Activity-C,那么C会出现在哪个栈?是A上面还是B,还是建一个新栈C?


今天我就被这种情况给困住了,因为我无意中造成了这种情况:B一旦启动C,则A也会被带出来,我在执行回退操作的时候的顺序是C->A,不见了B栈中的Activity对象,我刚开始以为是B或者C无意中启动了A最顶层的对象并消失,但是后来发现我在退出程序的时候发现B栈中的对象B中会报错,我猜B对象可能在程序退出的时候还存活,只是它没有存在于正常的回退栈中。如下图所示:


对于B消失的这种情况,建议将启动模式改为SingleTask,B启动C之后,C位于B栈内,回退也是正常流程,如果B设置为了SingleInstance,则会出现意料之外的问题,很难找到病症。

总结

以上是生活随笔为你收集整理的由Actvity启动模式之SingleInstance引起的坑的反思的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。