栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android共享服务?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android共享服务?

我的问题是,在任何一个应用程序中启动服务时,其他事件都不会通知到另一个应用程序。

那是因为您有两项服务。仅仅因为该服务打包在Android库项目中并不能以某种方式神奇地导致两个不同的应用程序使用同一副本。

例如使用Singleton模式保留单个实例,但问题似乎仍然存在。

这两个应用程序都在各自的进程中运行,并具有它们自己的服务私有副本。

我唯一的理解是,每次启动任一应用程序时,都会创建该库的新实例。

图书馆没有实例。Android库项目不是DLL,它们更类似于静态库。

因此,TestApplicationOne中引用的库与TestApplicationTwo中引用的库不是同一实例,因此不会被通知。

更准确地说,服务

TestApplicationOne
于是服务副本与中的副本
TestApplicationTwo

还是可以想到任何可能的解决方案?

没有两个单独的应用程序。

或者,重新设计您的应用程序,以使只有一个拥有该服务,而另一个使用第一个应用程序中的服务。

或者,在两个应用程序的清单中都禁用该服务,并以稳定

<intent-filter>
格式(例如,使用自定义操作字符串)导出该服务。要安装/运行的第一个应用程序用于
PackageManager
查看该服务是否存在(例如,它实际上不是第一个应用程序)-看到该服务不存在,它将启用该服务的自己的副本。然后,第二个应用程序经历相同的过程,看到该服务已经存在,并使用远程副本而不是启用自己的副本。

第二个或第三个都不是很容易的,仅仅是因为数据仅存在于一个应用程序中(一个带有服务的应用程序)。因此,如果该应用程序被卸载,则另一个应用程序也将被破坏,即使该应用程序恰好具有可作为禁用组件使用的服务代码。如果应用程序被用户明确描述为具有主要/辅助关系(例如,应用程序及其插件),那么这可能会奏效-
如果应用程序不存在,则用户希望插件不会起作用,例如。当然,在这种情况下,该插件最初不会拥有自己的服务副本,但始终会向主应用程序寻求。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号