您的位置:首页 > 汽车 > 新车 > 大专毕业设计网站_工作态度_企业网络营销推广方法_短视频营销方式有哪些

大专毕业设计网站_工作态度_企业网络营销推广方法_短视频营销方式有哪些

2025/3/17 0:48:03 来源:https://blog.csdn.net/weixin_44371972/article/details/146256553  浏览:    关键词:大专毕业设计网站_工作态度_企业网络营销推广方法_短视频营销方式有哪些
大专毕业设计网站_工作态度_企业网络营销推广方法_短视频营销方式有哪些

#背景
最近项目遇到一个问题,我开发的一个聚合媒体应用(包含如:USB音乐、BT音乐、FM等),这个应用的结构是通过TabBar来实现分页的,不同Tab对应不同的音源。而这个聚合媒体应用有多种被拉起的方式,比如通过Launcher的AppList,还有SystemUI的topbar,以及控制中心的功能快捷入口。上面说到了我这个应用是聚合媒体,控制中心的功能快捷入口就提供了多种音源的快捷跳转,如USB、BT、FM等。而实现方式,则是该入口处通过startActivity拉起聚合媒体应用时,在intent中会带上具体拉起源的参数,应用被拉起时,会解析Intent,然后决定切换到哪个Tab。

问题表现是:如果聚合媒体应用第一次冷启动是通过控制中心FM的快捷图标拉起,然后用户在应用界面切到了别的源,如USB,用户再到设置里面切换系统语言,执行后,通过Launcher的AppList把聚合媒体应用拉起,界面会回到FM源。

#原因分析
分析了原因,该表现是因为,在切换了系统语言后,应用的Activity会被销毁重构,会重新执行onCreate,而聚合媒体应用旧的逻辑里面,会去解析intent,判断是被谁拉起来的,才好做Tab切换。而Android系统机制里面,只要应用进程未销毁,Activity的onCreate获取到的intent都是第一次冷启动传过来的intent,也就是说,这个intent永远都是控制中心FM拉起是传过来的intent,这样去解析,肯定会切回FM了。

#解决办法
需要在Activity.onCreate回调中增加一个应用全局Flag判断,该Flag默认为false,如果应用是冷启动,且执行了onCreate回调,则将其置为true,以后,如果应用未销毁,只是Activity销毁重构,则在onCreate中不执行业务逻辑。

#问题
那么问题来了,上面说了,聚合媒体有很多拉起的入口,比如AppList,topbar,控制中心对于音源图标,那么如果不是冷启动,后面用户点击拉起应用是如何处理的呢?
其实,应用只要启动过,Activity未销毁,通过其它入口拉起,是不会回调onCreate的,这个不需要多解释。然后系统会回调onNewIntent,只需要解析该回调的intent传参即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com