web-dev-qa-db-ja.com

Android logcatの致命的なシグナル6とは

Android開発を初めて使用する場合、アクティビティから11回切り替えると、アプリが絶えず強制終了します。

致命的なシグナル6(SIGABRT)、tid 9485のコード-6(スレッド-141585)

私のlogcatで。

これは何を意味するのでしょうか?

詳細なし(コードを見ているような)。

1)UIスレッドをブロックしないでください。OSが応答しないアプリを強制終了するため、SIGABRTが発生する可能性があります。

11回切り替えると、すべてのアクティビティでバインドとバインド解除がアプリをクラッシュさせる

2)OnDestroy内のActivityで、自分の後片付けをしていることを確認してください。つまり、すべてのListeners/Eventsを削除してから、Base.OnDestoryを呼び出します。

3)外部(つまりBluetoothLeService)サービスが、null/nilになったリスナーを使用してアプリにコールバックすると、ハングが発生するため、SIGABRT、#2を参照

22
SushiHangover

ウィキペディアによると:

SIGABRTシグナルはプロセスに送信され、中止する、つまり終了するよう指示します。シグナルは通常、C標準ライブラリの中止関数を呼び出すときにプロセス自体によって開始されますが、他のシグナルと同様に外部からプロセスに送信できます。

通常、コードまたは呼び出したライブラリのいずれかに何らかのエラーがあることを示しています。

参照: プロセスがSIGABRT(シグナル6)を取得するのはいつですか?

11
Giorgi