私が提案するのは、他の人が言ったように onPause/onReume メソッドをオーバーライドすることです。アプリケーションの流れとアクティビティ間の相互作用について詳しく知らなければ、当て推量以上の情報を提供することはできません。
ただし、アクティビティが永続的である場合は、アクティビティを切り替えるときにインテントをより適切に利用することをお勧めします。
たとえば、各アクティビティにはブール値の「遷移」フラグが必要です。したがって、あるアクティビティから次のアクティビティに移動するときは、インテント エクストラを設定します。
intent.putExtra("transition",true);
受信アクティビティで次の操作を行います: (onCreate 内)
intent.getBooleanExtra("transition",false);
このようにして、起動するアクティビティごとに、それが別のアクティビティからのものなのか、それともホーム画面のランチャーから起動されたものなのかを知ることができます。したがって、true トランジションを取得した場合、onPause はサービスを停止してはなりません。つまり、返された後に前のアクティビティに戻ることになります。「トランジション」エクストラを受信しない場合、または誤ったトランジションを受信する場合は、現在のアクティビティを引き継ぐのを待っているアクティビティがその下にないと安全に想定できます。
最初のアクティビティでは、別のアクティビティに切り替える場合は、単にサービスを停止する必要があります。これは、あるアクティビティが別のアクティビティから開始されているかどうかをプログラムで把握できるはずです。