サービスのプロセスを維持しながら、アプリのメイン アクティビティを終了させようとしています (バックグラウンドでアクティブなアプリケーションのままではありません)。
ユーザーがホームボタンを押してアプリを離れるか、アプリの外部から別のアクティビティが起動された場合、アクティビティを閉じて、アクティブなアプリケーションとしてリストされないようにします。
ただし、プロセスが存続していることが重要です。バックグラウンド サービスも停止したくありません。
これを行う最善の方法は何ですか?
サービスのプロセスを維持しながら、アプリのメイン アクティビティを終了させようとしています (バックグラウンドでアクティブなアプリケーションのままではありません)。
ユーザーがホームボタンを押してアプリを離れるか、アプリの外部から別のアクティビティが起動された場合、アクティビティを閉じて、アクティブなアプリケーションとしてリストされないようにします。
ただし、プロセスが存続していることが重要です。バックグラウンド サービスも停止したくありません。
これを行う最善の方法は何ですか?
システムはこれ自体を適切に処理するため、アプリケーションを強制的に閉じないでください。代わりに、finish() を呼び出して、アプリが完了し、破棄できることを通知する必要があります (サービスは引き続き実行されます)。
デフォルトでは、サービスには UI がありません。起動すると、クラッシュするか殺されるまで実行されます。ユーザーがアプリを閉じて新しいアプリを起動しても、サービスは持続します。
一方、アクティビティは、表示されているときにのみ実行されます。ユーザーが別のアクティビティに移動すると、前のアクティビティが一時停止、停止、または強制終了されます。
上記で簡単に説明したことを行う簡単な方法は、サービスを開始するアクティビティを作成することです。そうすれば、使用がアクティビティから離れたときに、サービスがバックグラウンドで実行され続けます。
新しいアクティビティが表示されるたびにアクティビティを完全に終了させたい場合は、アクティビティfinish()
のメソッドonPause()
またはonStop()
メソッド (アプリに適した方) を呼び出すだけです。