2017-11-24 12 views
3

Native pthreadを使用して長時間実行されるタスクを実行するアプリケーションがあり、JNIを通じてスレッドへの参照を保持している通知なしにバックグラウンドサービスがあります。サービスを停止するときにアンドロイドはJVMを終了しますか?

サービスが破棄されると、pthreadへの参照が失われます。

これを静的/シングルトンに保存して、サービスが停止しても生き残ることができます。私の質問は:JVMはいつ死ぬのですか?アンドロイドはサービスを再起動するとJVMを再作成しますか?

おかげ

答えて

1

Androidは、フォアグラウンドアプリを実行していない場合はいつでもプロセスを終了できます(この状態はいつでもアプリから盗まれる可能性があります)。すべてのスレッドはなくなります。フレームワークがサービスを再開すると、それは他のスレッドと一緒に新しいプロセスになります。

詳細な説明はhttps://stackoverflow.com/a/24956128/192373を参照してください。

0

すべてのスレッドは、デーモンのものを除いて、死亡したときはい、

JVMは終了します。

アプリケーションを起動すると、JVMは静的メインメソッドを実行するためのデーモンではない単一のスレッドを開始します。

関連する問題