2011-09-07 81 views
0

我有一个内容观察者看着日历提供商的服务,另外还有一些情况下,我需要停止服务,以便观察者onchange添加事件时不会被调用,然后重新启动时,该服务它被添加。从活动停止服务

在我的活动中,我使用stopService(new Intent(context,Service.class));来停止服务,然后稍后尝试避免onchange调用时提供程序被更改,但它没有出现服务停止,因为onchange仍然被调用导致强制在我的数据库关闭,因为我的服务无法找到事件的查询。

所以我怎样才能解决这个问题?

+0

http://stackoverflow.com/questions/2176375/android-service-wont-stop – Rasel

+0

我没有做任何有约束力的,虽然 – tyczj

回答

0

尝试这样的:

ComponentName service = startService(new Intent(this, BaseballWatch.class)); 
// Stop a service using the service name. 
stopService(new Intent(this, service.getClass())); 
// Stop a service explicitly. 
try { 
    Class serviceClass = Class.forName(service.getClassName()); 
    stopService(new Intent(this, serviceClass)); 
} catch (ClassNotFoundException e) {} 
0

如果要返回START_REDELIVER_INTENT可能会影响你。这里是什么文件说一下吧:

如果同时启动( 从onStartCommand(意向,INT,INT)返回后)这个服务的过程中被杀死,那么这将是 安排在重启和通过onStartCommand(意向,INT,INT)最后递送的意图重新交付给再次 它。

但是,那么再说一次,说“死亡”,所以它不应该影响你。

除此之外,我不知道问题是什么,但如果你真的无法得到它的工作和其他没有人给你一个更好的答案(这希望有人会),你可以做registerReceiver(...)在该服务,然后在你的活动做sendBroadcast(...),并在服务的接收器onReceive,叫stopSelf()。我知道这是马虎,而不是最好的方法,但这是一个替代方法的想法。