2016-07-04 4 views
2

ich eine benutzerdefinierte POSIX-Signal-Handler Ref implementieren: http://blog.httrack.com/blog/2013/08/23/catching-posix-signals-on-android/Machen Sie Java von JNI ruft während native Signal Umgang

Ihr erscheint mit ART eine Plattform Einschränkung zu sein.

Gibt es eine Arbeit oder eine andere Möglichkeit zu erreichen, Java-Methode von JNI über die Signal-Handler-Methode aufrufen.

Wenn nicht, gibt es dann ein alternatives Schema, um den nativen Absturz abzufangen und zur App zu propagieren?

+0

Sie sollten dies nicht tun. Signalhandler sollten so schnell wie möglich zurückkehren und keine JVMs aufrufen. – EJP

+0

Ich stimme zu. Können Sie bitte eine Alternative vorschlagen, um die Signalverarbeitung zu erreichen, wo ich die Nachricht an die App weitergeben kann? – user1619571

Antwort

0

Vor allem - Sie sollten sehr vorsichtig sein mit dem, was Sie im Signal-Handler tun. Außerdem gibt es eine list von Funktionen, die Sie sicher von dort aufrufen können, suchen Sie nach "Async-signal-safe Funktionen". Und sicherlich sollten Sie nichts außerhalb dieser Liste oder anything über JNIEnv aufrufen, weil Sie nicht wissen, was JVM unter der Haube tut.

Als Ergebnis gibt es keine Möglichkeit, Fehler an die App zu propagieren. Sie können einfach alles, was Sie wollen, in eine Datei mit write() schreiben und dann diese Datei beim nächsten Start testen.