我的处理程序在我的服务类中声明了onCreate()。我的应用程序在某些情况下触发此处理程序(postDelayed方法)。但是,如果用户想要退出我的应用程序,我希望该处理程序停止(从X时间执行 - 使用removeCallBacks())。 我如何得到对我的活动中服务中声明的处理程序对象的引用,所以我可以调用它的方法? (合适的方式)。这甚至可能吗?
我已经检查了Reference handler object from main activity,但这没有用。
我可以通过静态方法获得引用,但这真的是正确的方法吗?
答案 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);
在您的服务中onStartCommand
或onHandleIntent
取决于您的服务类型
if(intent.getAction().equals("stopHandler")){
// call removeCallBacks()
}
对于第二个解决方案see this