Androidができます(とします)背景を殺すメモリ上のユーザーが の積極的認識しており、低殺すためにシステムの候補ではないサービスです低リソース状況でのプロセス、(特に、バッテリやメモリリソースを節約するためにローエンドのデバイスで)必要とする場合があるためです。それはあなたのアプリケーションをホストしているOSプロセスを殺すことによってこれを行います。この場合、アプリはバックグラウンドで実行されなくなるため、Application.onCreate()
に作成したシングルトンはなくなります。
Androidはあなたのシングルトンについて何も知らないので、それを復元する理由はありません。
あなたはonStartCommand()
からService
とそのService
戻りSTART_STICKY
を作成する場合は、これはあなたのService
はすべての時間(可能な場合)を実行したままに望んでいることのAndroidに伝えます。この場合、AndroidがService
をホストしているOSプロセスを強制終了した場合(リソースの制約や理由だけで)、Androidは自動的にService
を再起動します(AndroidはあなたのService
を知っていて、時間)。これを行う正しい方法です。
注:0120-一部のデバイス(特にXiaomi、Huawei、LG、Lenovoなどの中国語デバイス)は、STICKYサービスを自動的に再起動しません。これらのデバイスはバックグラウンドで実行できる「保護されたアプリ」または「特権付きアプリ」のリストを維持し、AndroidはこのリストにあるアプリケーションのSTICKYサービスのみを再起動します。あなたは、このリストにあなたのアプリを追加する手をで手に入れる必要があります。これらのデバイスのこのリストにプログラムをプログラムで追加する方法はありません。
https://stackoverflow.com/a/42120277/769265と https://stackoverflow.com/a/41369032/769265
シングルトンがあなたの活動が破壊された直後、私はむしろサービスにとどまる – mayosk
@mayoskが、それはそうで殺されます?を参照してください。私は、たとえ私が単一のインスタンスを作成しても、それが殺されるとは思わない。しかし、とにかく私はアプリケーションonCreate()のみを作成したいと思います。 – sd33din90
あなたのシングルトンの作成方法でテストを行います。毎分のログを作成し、あなたのアプリが見えるときに試してみてから、アプリの外に出てチェックしてください。 – mayosk