我有这个问题,因为我切换到EventBus(任何总线库都会发生),每当我想在视图没有准备好时执行动作,那么我将得到总线未注册的错误;
E/EventBus: Could not dispatch event: class com.androID.greenfIEld.Action to subscribing class class com.androID.greenfIEld.GreenStore
当我想在生命周期的那些部分中触发Action时会发生这种情况:
当我拍摄照片/视频时:
@OverrIDepublic voID onActivityResult(int requestCode, int resultCode, Intent data) { actionsCreator.uploadfile(filepath, "image/jpg"); // ... (Error here because the bus isn't yet registered)}
或者在我收到NFC标签时:
@OverrIDepublic voID onNewIntent(Intent intent) { actionsCreator.uploadNfcTag(intent); // ... (Error here because the bus isn't yet registered)}
如果我按照他们在文档中说的那样遵循正常方式或EventBus,我应该注册并取消注册:
@OverrIDepublic voID onStart() { super.onStart(); EventBus.getDefault().register(this);}@OverrIDepublic voID onStop() { EventBus.getDefault().unregister(this); super.onStop();}
到目前为止,我发现的唯一解决方法是在我想执行onStart()和onStop()生命周期之间的 *** 作时注册和取消注册…但它很脏而且我感觉很糟糕
@OverrIDepublic voID onNewIntent(Intent intent) { dispatcher.register(GreenStore); actionsCreator.uplaodNfcTag(intent); dispatcher.register(GreenStore);}
解决方法:
如果您尝试在onActivityResult中显示对话框片段,则会出现与获取IllegalStateException的原因相同的问题.简单地说,它在用户界面恢复生机之前运行.
简单解决方案
1.)
Handler handler = new Handler(Looper.getMainLooper());handler.post(new Runnable() { @OverrIDe public voID run() { actionsCreator.uploadfile(filepath, "image/jpg"); }});
2.)while the bus is paused (this is something you’d handle manually), you should queue up the events, and then when it’s unpaused, execute them.
总结以上是内存溢出为你收集整理的android – 只要视图没有启动就使用总线?全部内容,希望文章能够帮你解决android – 只要视图没有启动就使用总线?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)