活动中的处理程序引用,来自服务类

时间:2013-02-07 16:02:46

标签: java android service android-activity handler

我的处理程序在我的服务类中声明了onCreate()。我的应用程序在某些情况下触发此处理程序(postDelayed方法)。但是,如果用户想要退出我的应用程序,我希望该处理程序停止(从X时间执行 - 使用removeCallBacks())。 我如何得到对我的活动中服务中声明的处理程序对象的引用,所以我可以调用它的方法? (合适的方式)。这甚至可能吗?

我已经检查了Reference handler object from main activity,但这没有用。

我可以通过静态方法获得引用,但这真的是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您已经拥有该服务的对象(通过ServiceConnection获得),则可以在Service中公开一个将在Handler实例上调用removeCallBacks的公共方法。

答案 1 :(得分:1)

您不需要在活动中使用处理程序引用,您可以要求服务停止处理程序。

通过最简单的活动,您可以通过多种方式与服务进行通信:

1-致电startService并传递给Intent,同时采取行动,例如 stopHandler ,当服务收到它时,调用removeCallBacks()

2-使用LocalBroadcast向服务发送消息以停止处理程序

您也可以绑定到该服务,但这将是比以前的方法更多的工作

修改

在您的活动中,您可以调用类似

的内容
Intent intent = new Intent(context,MyService.class);
intent.setAction("stopHandler");
startService(intent);

在您的服务中onStartCommandonHandleIntent取决于您的服务类型

if(intent.getAction().equals("stopHandler")){
   // call removeCallBacks()
}

对于第二个解决方案see this