【问题标题】:How can I prevent stalling of code in my android jni calls?如何防止我的 android jni 调用中的代码停滞?
【发布时间】:2016-01-17 00:03:54
【问题描述】:

我正在移植一个已经用 C++ 编写的应用程序,以便在 Linux 上运行,现在需要在 Android 设备上运行。它是一个 GPU 密集型应用程序,可以进行 OpenCL 调用,运行一组测试。这些可能需要几个小时或几天才能完成运行。

我有一个 Java Activity,它读取一些基本输入,然后将其传递给 JNI。

对于较短的操作它运行良好,但超过几秒钟它会暂停;我可以取消它的暂停,它会继续运行,但是每隔一百左右的操作它就会严重挂起(需要一分钟而不是一秒钟)。

是不是我缺乏 Android 知识,我忽略了一些可能导致这种情况的严重谬误?将所有代码移至 NativeActivity 是否更有意义?还是我只需要不时调用 Java 来显示某些内容以防止操作系统将我关闭?

感谢有耐心回答我问题的人

【问题讨论】:

    标签: android c++ java-native-interface opencl native-activity


    【解决方案1】:

    在 Android 上,一个严格的规则是 UI 线程上不应运行 CPU 密集型长操作。切换到 NativeActivity 或回调显示内容都无济于事,但如果您在工作线程上运行测试,我可能会不时更新屏幕以让用户跟踪整体进度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 2018-01-19
      • 1970-01-01
      • 2011-01-21
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多