java - 为什么 Activity 无法正常恢复?

标签 java android tensorflow-lite

我试图让程序在按下最右边的按钮查看打开的应用程序或使手机进入休眠状态后调用 onPause 和 onStop 后正确恢复。我不熟悉正确的调用是什么。我查了一些关于此的信息,但我发现人们都说在 onPause 中调用 super.onPause ,在 onResume 中调用 super.onResume ,然后编写我的代码。然而,这段代码不是我的,并且在恢复时崩溃并出现错误:

java.lang.RuntimeException: Unable to resume activity {org.tensorflow.lite.examples.detection/org.tensorflow.lite.examples.detection.DetectorActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.startPreview()' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.startPreview()' on a null object reference

代码可以在以下位置找到: https://github.com/tensorflow/examples/blob/master/lite/examples/object_detection/android/app/src/main/java/org/tensorflow/lite/examples/detection/LegacyCameraConnectionFragment.java


对于这一切,我有两个问题:

  • 我可以通过注释第 185-187 行来让相机正确重新启动,但我不知道这是否是正确的方法。评论?有什么想法吗?

  • 即使这有效,主要 Activity 也不会重新启动。这是这里实际的主要问题。我还想象这段代码一定有问题,但无法弄清楚它是什么。关于如何修复它有什么建议吗?


主要 Activity 代码链接: https://github.com/tensorflow/examples/blob/master/lite/examples/object_detection/android/app/src/main/java/org/tensorflow/lite/examples/detection/CameraActivity.java

最佳答案

由于某种原因,我在问题中所做和提到的更改并没有解决问题。我想这与调用 onStop 后未正确设置回调或新的后台线程更改某些内容有关?

为了解决这个问题,我添加了

textureView.getSurfaceTextureListener().onSurfaceTextureAvailable(textureView.getSurfaceTexture(), textureView.getWidth(), textureView.getHeight());

Legacy....java 文件中第 152 行之前。

关于java - 为什么 Activity 无法正常恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776846/

相关文章:

java - 如何扫描数组并将输入与数组元素进行比较

java - 让滚动条与绝对定位一起工作

Android 商店用户购买的媒体文件,因此只有应用程序可以访问

android - 将 List<String> 项与 String 进行比较

python - Tensorflow 每 channel 量化

python - 如何使用适用于 x86_64 系统的精选 TensorFlow ops 构建 TensorFlow lite?

java - 比较 ASM MethodNode 参数

java - 代码覆盖率中应该包含注释吗?

android - Google 的 Messenger 应用程序在发送彩信时未附加图片

android - 在 Hexagon DSP 上运行 Tensorflow Lite 演示模型