ほとんどの操作を処理するサービスを使用している大きなテキストメッセージアプリがあります。アプリには、さまざまな操作を実行するためにサービスにバインドする約10個ほどの異なるアクティビティがあります。すべてのアクティビティはonResumeでサービスにバインドされ、onStopでバインド解除されます(ここでも参照を無効にします)。このサービスは、アプリを最初に開いたときに開始するstartServiceコマンドも受け取ります。
キルスイッチを実装しようとしています。これにより、特定の番号から特定のキーワードを使用してテキストが送信されると、個別のアクティビティを除いてアプリがシャットダウンされ、再アクティブ化テキストをリッスンするライセンスサービスが提供されます。
メインのテキストメッセージサービスもフォアグラウンドサービスとして実行されているため、通知バーに表示されます。現在、非アクティブ化テキストを取得しても、通知バーから自分自身を削除することはありません。stopForeground()を実行して手動で取り出すことができますが、それは通知バーからのみ取り出します。アプリがアクティベーションテキストを受信した場合、サービスはonStartCommandを取得しますが、onCreate(フォアグラウンドサービスに設定した場所)は取得しません。
また、サービスがonDestroy()メソッドを呼び出しているようには見えません。ここや他の場所で、startServiceを使用してサービスにバインドするときは、まずサービスのバインドを解除してから、stopServiceを実行する必要があることを読みました。上で述べたように、onStopにバインドするすべてのアクティビティでサービスのバインドを解除しているため、これらのアクティビティのいずれも表示されない場合は、バインドしないでください。また、stopServiceも呼び出しています。
サービスによってまだ何かが保持されているように見えますが、私は何について途方に暮れています。このサービスには6つの個別のスレッドがあり、停止する前に必ず破棄してください(また、SMSレシーバーの登録を解除します)。
これをさらに診断する方法について何かアイデアはありますか?