我有Fragment
fr ,Service
ser ,BroadcastReceiver
brc 。< / p>
在 fr 中我有一个开关,当选中它时会启动 ser ,当取消选中时它会停止它,到目前为止一直很好。
在 ser 中,我注册了一个名为 brc 的BroadcastReceiver
,并添加了一个名为 USER_PRESENT 的IntentFilter
,设备已锁定,我有Service
来电stopSelf()
并注册BroadcastReceiver
,当手机解锁时,onReceive()
会被呼叫,我已添加了该方法用于再次启动Service
的代码。
现在,问题是......即使我正在调用Service
,我也无法在取消选中开关时停止stopService(intentname);
。
我的猜测是,这是一个不同的Intent
由不同的类发起。所以我已经停止Intent
这样:
stopService(brc.intentname);
没有任何事情发生,Service
一直在运行。这是什么解决方案?。
代码:
片段:
if ( !Switched ) {
getActivity().startService(ServiceIntent);
}
if( Switched ){
getActivity().stopService(ServiceIntent);
getActivity().stopService(BroadcastTest.ServiceIntent);
}
服务:
if( !isScreenOn && isLocked )
{
this.getApplicationContext().registerReceiver(new BroadcastTest(), new IntentFilter("android.intent.action.USER_PRESENT"));
CancelTimer();
stopSelf();
}
BroadcastTest :
ServiceIntent = new Intent(context, Service.class);
context.startService(ServiceIntent);