What will happen to S when A is destroyed?
A が S にバインドされた唯一のアクティビティであり、 を介してサービスを開始しなかった場合startService(Intent)
、S は破棄されます。これは、サービスは、最後にバインドされたアクティビティがサービスから解放されるまで存続するためです。これはここに文書化されています。
How can I recreate another Activity that binds to S?
A がバインドされていて、インテントを介してアクティビティ B に切り替えると、サービスは破棄され、B がバインドされたときに再作成されます。
アクティビティがバインドされていなくてもサービスを有効にしたい場合は、 でサービスを呼び出す必要がありますstartService(Intent)
。明示的に停止するか、システムがそれを破棄する時が来たことを意味する場合、それは回避されます。この動作が望ましくない場合は、データを永続化し、特定の時間にアクセスしてください。
I think if I open the app again, a new process is created for another instance of A and S
プロセスがシステムから強制終了されるまで、または推奨されていないプロセスを強制終了するまで、プロセスは同じままです。
編集:
バインドされたサービス ライフサイクルのみがアクティビティに依存します。スタンドアロンが必要な場合は、1 回使用してstartService()
ください。このように、アクティビティから独立しており、アプリのプロセスが稼働している限り、または明示的にサービスを停止している限り、バックグラウンドで実行されますstopService() / stopSelf()
。独自のアプリでサービスを使用し、IPC を使用してアプリ間で通信することもできます。それはすべてユースケースの問題です。
ご覧のとおり、サービスの構成は非常に柔軟であり、アプリに最適なものを決定する必要があります。