サービスを停止できません。Andoridサービスをサービス停止する
私には2つのサービスがあります。 Service1はstartService(intent)でService2を開始します。 stopSelf()でservice1を停止します。 その後、私はService2で何かをやって、Service1をやり直してService2をやめます。
だから、彼らは常に再びお互いを開始しています。
サービスの動作は、最初の起動後に異なります。
私はいくつかのログメッセージを書きますが、情報がログcatで何倍になっているか分かります。
また、stopServiceを使用して、他のアクティビティのonStartCommandでアクティビティを停止しようとしました。
public class Service1 extends Service{
private int startId;
@Override
public void onCreate(){
super.onCreate();
}
private void doSomething(){
...
...
Intent intent = new Intent(getApplicationContext(), Service2.class);
startService(intent);
this.stopSelf(startId);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
this.startId=startId;
Intent beaconIntent = new Intent(getApplicationContext(), Service2.class);
stopService(beaconIntent);
doSomething();
return START_STICKY;
}
}
サービス2::
サービス1:ここでは
は私のコードの一部です(サービス1のonStartCommandで、私はstopServiceのサービス2を呼び出して)私はworngやってる何public class Service2 extends Service implements BeaconConsumer, RangeNotifier{
private BeaconManager mBeaconManager;
private int startId;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Intent service1 = new Intent(getApplicationContext(), Service1.class);
stopService(service1);
mBeaconManager = BeaconManager.getInstanceForApplication(this);
mBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("s:0-1=feaa,m:2-2=00,p:3-3:-41,i:4-13,i:14-19"));
mBeaconManager.bind(this);
this.startId = startId;
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mBeaconManager.unbind(this);
}
@Override
public void onBeaconServiceConnect() {
region = new Region("all-beacons-region", null, null, null);
try {
mBeaconManager.startRangingBeaconsInRegion(region);
} catch (RemoteException e) {
e.printStackTrace();
}
mBeaconManager.addRangeNotifier(this);
}
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if(!beacons.isEmpty()){
doSomething...
...
...
Intent intent = new Intent(getApplicationContext(), Service1.class);
startService(intent);
this.stopSelf();
}
}
}
?
編集:私はaltbeaconライブラリで作業しているとは言及していませんでした。私はそれが影響を与えないと思った。 しかし、私がアプリケーションを起動するときに実行しているサービスを見て、Service2を停止した後は常に2つのaltbeaconサービス(BeaconIntentProcessorとBeaconService)が実行されています。 多分彼らは私のサービスをmutlipy回呼んでいます。私は私が間違って何をしたかだあなたの助けを
おかげ
敬具
「私は何をやっているのですか?」「あなたはあなたのソースを狙っていません – pskink
Service1を起動する条件は何ですか? –
私はいくつかのコードを追加しました。 @Elias Fazel:Service1の条件はどういう意味ですか?私は他のサービスを開始した後、両方のサービスを停止します。したがって、1回のサービスにつき1回だけ実行する必要があります。 – Fabian