-1

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

我已经从 main activity 中检查了 Reference 处理程序对象,但它不是很有帮助。

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

4

2 回答 2

1

如果您已经有一个服务对象(通过ServiceConnection),您可以在 Service 中公开一个公共方法,该方法将调用removeCallBacksHandler 实例。

于 2013-02-07T16:05:55.647 回答
1

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

有很多方法可以从最适合您的情况的活动中与您的服务进行通信:

1-调用startService并通过Intent操作传递给它,例如当服务接收到它时调用的stopHandlerremoveCallBacks()

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

您也可以绑定到服务,但这将比以前的方法额外工作

编辑

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

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

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

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

对于第二种解决方案,请参阅此

于 2013-02-07T16:09:34.670 回答