Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何确保android库项目代码只在其中一个集成它的已安装应用程序中执行?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个库项目,该项目将集成到一些流行的 Android应用程序中,可以在Google Play中看到.

假设用户可以安装两个或更多应用程序,并且每个应用程序都可以集成我的库.该库具有一些用于检测环境状态变化的特定代码.状态只是发送到我的服务器.问题是环境状态处理需要很多cpu能力,但需要很短的时间.处理循环由AlarmManager启动,使用“非唤醒”广播启动正确的Intentservice.

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

怎么实现呢?我正在虑某种权限验证和跨包检测,但无法想象如何实现它.

解决方法

我会尝试一些与Csma / CD碰撞检测技术相关的东西,这种技术在网络中使用(或者更常用).

您不希望提交特定实例以始终执行工作,因为您不知道是否会卸载该实例.因此,每次都要重新做出决定(因为无论在任何给定时间,它都无关紧要).

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

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

如果您确实从至少一个其他库中收到消息(跟踪您听到的所有消息),请等待一段随机时间.如果您在这段时间内收到来自另一个图书馆的消息说“我会这样做”,那么请立即发出一条消息,意思是“好的,你这样做”.如果你不这样做,那么发出一条消息说“我会这样做”,并等待你从一开始就收到消息的其他每个库发送一个“好的,你做的”消息.然后做好工作.

如果你发送一个“我会做”的消息,但是从另一个库中获得“我会做”的消息,然后开始这个过程.每个库等待随机时间发送“我会做”的事实意味着很少会发生这样的冲突,并且它们当然不应该经常连续多次发生.

我希望我已经很好地解释了这一点,你可以实现它.如果没有,请询​​问澄清,或者看看在网络世界中如何做到这一点.我想要描述的就像所谓的“碰撞检测”,例如这里引用的:https://en.wikipedia.org/wiki/CSMA/CD

@H_675_34@

大佬总结

以上是大佬教程为你收集整理的如何确保android库项目代码只在其中一个集成它的已安装应用程序中执行?全部内容,希望文章能够帮你解决如何确保android库项目代码只在其中一个集成它的已安装应用程序中执行?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。