【发布时间】:2015-05-11 20:14:30
【问题描述】:
我使用我的服务中的以下代码开始了一项活动:
Intent cmActivityIntent = new Intent(getApplicationContext(), CallManagementActivity.class);
cmActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(cmActivityIntent);
在应用的清单中,活动的启动模式定义为android:launchMode="singleTask"。
我一直在寻找停止服务 onDestroy() 上的活动的方法,但我找不到任何可以帮助我的文档。而且我只找到了一种方法。
我已经看到了检查服务的方法,如果活动是使用活动类静态属性 (public static boolean isInstanced) 实例化的,并且如果是,则使用 FINISH_ACTIVITY 额外向活动发送另一个意图。然后,在活动的onNewIntent() 上检查标志,如果包含标志,活动将完成。
我觉得这种方法不合适,因为意图应该用于启动活动而不是停止它们。
有人知道如何完成此任务的任何其他方式吗?
【问题讨论】:
-
广播可以工作,在活动中有一个接收器。或者,活动可以绑定到服务,向其传递信使,服务将使用信使将命令传递给活动。
-
LocalBroadcastManager或像Otto这样的事件总线应该能够做到这一点,然后只需在事件上调用finish()。 -
@njzk2 您能否将绑定替代方案发布为带有示例代码的解决方案来尝试它是否有效?
-
我赞成您在帖子中提到的方法。我一直在做这种事情。
Intents 在 Android 中用于组件之间的通信。它们不仅用于开始活动。恕我直言,这是一个完全合法的目的。另一种选择是发送广播Intent(如@njzk2 建议的那样)。
标签: android android-intent android-activity broadcastreceiver android-service