在 Android 应用程序(API 级别 14 及更高版本)中,有一个服务被不同的活动使用(它们使用本地绑定调用其函数),该服务以每秒60次的频率计算游戏元素的位置(坐标)。[我有充分的理由在服务中进行计算而不是直接在活动中进行]。这些连续的位置更新在服务中(用于游戏逻辑检查)和游戏屏幕活动中(用于绘图)都是必需的。
我的问题是:对于这种情况,选择哪种选项来进行服务到活动的通信?我想将毫秒级别的延迟最小化(最好几乎没有延迟),使得服务计算出新位置的时间点和 UI(活动)知道新位置的时间点尽可能接近。
您可以假设所有内容(活动、服务)都在一个进程中。
我考虑了一种解决方案,即每个活动在恢复时告诉服务其存在(并在 onPause() 中告诉服务它们不可用),以便服务在计算新坐标时可以直接检查活动是否可见,并且如果可见,则直接调用 visibleActivity.someMethod()。应该注意的是,.someMethod() 内部会将控制权移交给 UI 线程。
我提出这个方案,因为我相信通过广播传递会降低性能。
请让我知道您的想法!
我的问题是:对于这种情况,选择哪种选项来进行服务到活动的通信?我想将毫秒级别的延迟最小化(最好几乎没有延迟),使得服务计算出新位置的时间点和 UI(活动)知道新位置的时间点尽可能接近。
您可以假设所有内容(活动、服务)都在一个进程中。
我考虑了一种解决方案,即每个活动在恢复时告诉服务其存在(并在 onPause() 中告诉服务它们不可用),以便服务在计算新坐标时可以直接检查活动是否可见,并且如果可见,则直接调用 visibleActivity.someMethod()。应该注意的是,.someMethod() 内部会将控制权移交给 UI 线程。
我提出这个方案,因为我相信通过广播传递会降低性能。
请让我知道您的想法!
activity.someMethod()
,我实际上必须创建一个意图(intent),将一些键/值对作为额外内容放入其中以指定我要调用哪个方法,然后在接收方(BroadcastReceiver)进行字符串比较。这对我来说似乎只是丑陋和不必要的。 - MShekow