我有一个服务,内容观察员正在观看日历提供程序,并且在某些情况下我需要停止服务,以便在添加事件时不会调用观察者的onchange
,然后在重新启动时重新启动服务已添加。
在我的活动中,我使用stopService(new Intent(context,Service.class));
来停止服务,然后我在以后尝试避免onchange调用时再次启动它,当提供程序发生更改但是看起来服务没有停止因为onchange仍然得到因为我的服务中的查询无法找到该事件,因此在我的数据库中调用导致强制关闭。
那我怎么能解决这个问题?
答案 0 :(得分:0)
如果您要返回可能会影响您的START_REDELIVER_INTENT
。以下是文档对此的说法:
如果此服务的进程在启动时被终止(之后) 从onStartCommand(Intent,int,int)返回,然后它将是 计划重新启动,最后交付的Intent重新发送到 它再次通过onStartCommand(Intent,int,int)。
但是,然后再说,“杀死”,所以它不应该影响你。
除此之外,我不确定会出现什么问题,但是如果你真的无法让它发挥作用而没有其他人给你一个更好的答案(希望有人愿意),你可以做{{1在服务中,然后在您的活动中registerReceiver(...)
,并在服务接收方的sendBroadcast(...)
中,拨打onReceive
。我知道它很草率,而不是最好的方法,但它是另一种方法的想法。
答案 1 :(得分: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) {}