gpt4 book ai didi

android - 如何确保 android 库项目代码仅在集成它的已安装应用程序之一中执行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:18 24 4
gpt4 key购买 nike

我正在开发一个库项目,它将集成到一些可以在 Google Play 中看到的流行 android 应用程序中。

假设用户可以安装两个或多个应用程序,并且每个应用程序都可以集成我的库。该库有一些特定的代码用于检测环境状态的变化。状态只是发送到我的服务器。问题是环境状态处理会占用大量 CPU 资源,但时间很短。处理周期由 AlarmManager 启动,使用启动适当 IntentService 的“非唤醒”广播。

我的目标是以这种方式实现库,只有一个集成到应用程序中的实例才能完成工作。我的意思是只有一个库模块应该充当“Activity ”。如果用户设备上安装了更多应用程序 - 那么它们不应重叠。

如何实现?我在考虑某种权限验证和跨包检测,但无法想象如何实现它。

最佳答案

我会尝试一些与网络中使用(或过去经常使用)的 CSMA/CD 冲突检测技术相关的东西。

您不想让特定实例始终执行该工作,因为您不知道该实例是否会被卸载。因此,相反,每次都重新做出决定(因为在任何给定时间由哪个决定真的无关紧要)。

它变得有点复杂,因为这不是一个需要解决的小问题,但我喜欢有人可能将这个解决方案推广给任何人使用的想法(开源你用这个做什么?)。

当初始广播到达时,发送您也在收听的自定义广播(标识为来自您的特定应用)。如果您在一秒钟之内没有收到任何其他相同的广播,那么请继续进行工作,因为您的库中一定没有其他实例愿意做这项工作。

如果您确实从至少一个其他图书馆收到消息(跟踪您收到的所有消息),请等待一段随机的时间。如果您在这段时间内收到来自另一个图书馆的消息说“我会做”,请立即发送一条消息,意思是“好的,你来做”。如果您,则发送一条消息说“我来做”,然后等待您在开始时收到消息的所有其他图书馆发送“好的,你来做” “信息。然后做作业。

如果您发送了一条“我会做”的消息,但也从另一个图书馆收到了“我会做”的消息,那么请重新开始该过程。每个库随机等待一个时间来发送“我会做”的事实意味着很少会发生这样的冲突,而且它们当然不应该经常连续发生多次。

我希望我已经很好地解释了这一点,以便您能够实现它。如果不是,请要求澄清,或者看看在网络世界中这是如何完成的。我要描述的是所谓的“碰撞检测”,例如此处引用的:https://en.wikipedia.org/wiki/CSMA/CD

关于android - 如何确保 android 库项目代码仅在集成它的已安装应用程序之一中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com