【问题标题】:Make Java calls from JNI during native signal handling在本机信号处理期间从 JNI 进行 Java 调用
【发布时间】:2016-07-04 05:38:19
【问题描述】:

我实现了一个自定义 POSIX 信号处理程序 参考:http://blog.httrack.com/blog/2013/08/23/catching-posix-signals-on-android/

它们似乎是 ART 的平台限制。

有没有变通方法或任何其他方式来实现,通过信号处理程序方法从JNI调用java方法。

如果没有,那么是否有替代方案来捕获本机崩溃并传播到应用程序?

【问题讨论】:

  • 你不应该这样做。信号处理程序应尽快返回,而不是调用 JVM。
  • 我同意。您能否建议一种替代方案来实现信号处理,我可以将消息传播到应用程序?

标签: java android java-native-interface


【解决方案1】:

首先 - 你应该非常小心你在信号处理程序中所做的事情。还有一个list 的函数,您可以从那里安全地调用,查找“异步信号安全函数”。当然,您不应该通过JNIEnv 调用该列表之外的任何内容或anythyng,因为您不知道JVM 在后台做了什么。

因此,无法将错误传播到应用程序。您可以使用write() 将您想要的任何内容写入某个文件,然后在下次启动时测试此文件。

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2012-06-16
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多