在 Android 应用程序(API 级别 14 和更高级别)中,具有由不同活动使用的服务(它们使用本地绑定调用其函数),该服务以 60 Hz 计算游戏元素的位置(坐标)。[我有充分的理由在服务中进行计算,而不仅仅是直接在活动中]。在服务(用于游戏逻辑检查)和游戏屏幕活动(用于绘图)中需要这些连续的位置更新。
我的问题是:在这种情况下,服务到活动通信的选项是什么?我想将服务计算新位置的时间点与 UI(活动)已知的时间点之间的毫秒延迟(充其量,几乎没有延迟)最小化。
您可以假设一切(活动、服务)都在一个过程中。
我正在考虑一个解决方案,其中每个活动,无论何时恢复,都会告诉服务它的存在(并且在 onPause() 活动告诉服务它们不可用),以便服务在计算新坐标时可以简单地检查一个activity是否可见,如果是,直接调用visibleActivity.someMethod()。据了解, .someMethod() 在内部将控制权交给了 UI 线程。
我建议这样做,因为我确信通过广播应该会降低性能。
让我知道你的想法!