【问题标题】:crash on Orientation change while filming with Library CWAC CAM2使用库 CWAC CAM2 拍摄时方向更改崩溃
【发布时间】:2016-02-29 18:18:12
【问题描述】:

我使用 CommonsWare 库 cwac:cam2 在我的 nexus 5 Android 6(锤击/锤击)上崩溃了

当我改变录制/照片捕捉活动的方向时。该错误在我的设备上是系统性的。

堆栈跟踪:

E / AndroidRuntime: FATAL EXCEPTION: main
Process: com.m360learning.android, PID: 9637
java.lang.RuntimeException: Unable to start activity ComponentInfo {
 com.m360learning.android / com.commonsware.cwac.cam2.VideoRecorderActivity
}: de.greenrobot.event.EventBusException: Subscriber class com.commonsware.cwac.cam2.CameraFragment already registered to event class com.commonsware.cwac.cam2.CameraController$ControllerReadyEvent
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java: 4077)
at android.app.ActivityThread. - wrap15(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1350)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 148)
at android.app.ActivityThread.main(ActivityThread.java: 5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616)
Caused by: de.greenrobot.event.EventBusException: Subscriber class com.commonsware.cwac.cam2.CameraFragment already registered to event class com.commonsware.cwac.cam2.CameraController$ControllerReadyEvent
at de.greenrobot.event.EventBus.subscribe(EventBus.java: 179)
at de.greenrobot.event.EventBus.register(EventBus.java: 165)
at de.greenrobot.event.EventBus.register(EventBus.java: 133)
at com.commonsware.cwac.cam2.CameraFragment.onStart(CameraFragment.java: 123)
at android.app.Fragment.performStart(Fragment.java: 2244)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java: 1002)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java: 1148)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java: 1130)
at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java: 1958)
at android.app.FragmentController.dispatchStart(FragmentController.java: 163)
at android.app.Activity.performStart(Activity.java: 6274)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java: 4077) 
at android.app.ActivityThread. - wrap15(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1350) 
at android.os.Handler.dispatchMessage(Handler.java: 102) 
at android.os.Looper.loop(Looper.java: 148) 
at android.app.ActivityThread.main(ActivityThread.java: 5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616) 

非常感谢您的支持,修复非常迅速。

【问题讨论】:

  • 请分享一些代码?尤其是CameraFragment类的实现@
  • @GeorgeD:这是来自图书馆,OP 没有明确解释。
  • @Renaud:你需要让你的问题更适合 Stack Overflow。 理解你在这里的意思,因为我过去曾在这个领域处理过你的其他问题。然而,Stack Overflow 是一个面向每个人 的网站,而不仅仅是您。你的每一个问题都需要向不知道你或我是谁的人解释你的问题是什么。仅仅发布堆栈跟踪和有限的解释是不够的。
  • 好的,对不起,我应该直接在github上发布。
  • 是的,在这种情况下,这显然是一个错误,可以直接进入问题跟踪器。基本上,如果您的问题是“这是我的代码,我做错了吗?”,这适合这里。但是任何可以使用演示应用程序直接重现的问题(例如崩溃)都可以直接转到问题跟踪器。

标签: android commonsware-cwac greenrobot-eventbus


【解决方案1】:

问题是您尝试注册服务两次,如您在跟踪中看到的那样在此处输入代码。该服务没有取消注册,因此对您来说最简单的选择是在注册之前检查服务是否已注册 EventBus.getDefault().isRegistered(...) 或检查 onStart 是事件服务没有停止,因此仍然挂号的。例如:

if (!EventBus.getDefault().isRegistered(this)) {
    EventBus.getDefault().register(this);
}

【讨论】:

  • 谢谢你,但是,正如 CommonsWare 所提到的,问题更多是关于将错误提交给 CWAC 贡献者。我不会推荐您的解决方案,我认为这里的问题更多是活动在需要时未正确取消注册。
  • @RenaudFavier,我认为这是错误,因为他们没有处理方向更改,但作为开发人员,这是一个实现问题。因为要么您必须按照记录从该事件中取消注册,要么在注册时检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多