在android中用eventBus.2.4.jar中出现的问题
来源:互联网 发布:java中getField 编辑:程序博客网 时间:2024/05/22 03:03
在项目中用到eventBus.2.4.jar包中混淆出现一下问题,程序在测试环境下可以正常运行
com.ypy.eventbus.EventBusException: Subscriber class com.quickdate.quickappointmentgame.android.fragment.SearchFragment has no public methods called onEvent
at vk.a(Unknown Source)
at va.a(Unknown Source)
at va.a(Unknown Source)
at com.quickdate.quickappointmentgame.android.fragment.SearchFragment.onCreate(Unknown Source)
at android.support.v4.app.Fragment.performCreate(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
at android.support.v4.app.BackStackRecord.run(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
at android.support.v4.app.FragmentManagerImpl$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5432)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
最终的解决办法是:
首先EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦;
在eventBus中会有四种方法
1、onEvent: 那个线程发出,在那个线程执行
2、onEventMainThread:为订阅函数,不论事件在那个线程中发布出来的,他都会在UI线程中执行,接收事件就会在ui线程中运行。所以此方法中不能执行耗时操作的。
3、onEventBackgroundThread:在子线程中执行
4、onEventAsync: 作为订阅函数,无论在哪个线程发布,都会创建新的子线程在执行eventAsync
eventBus.getDefault().register(this);
此this指的是注册入口之后进入onevent()方法,即时在项目中没重写其他的三个方法,它也会执行到,
所以在做混淆处理的时候要把 单独的onevent()等四个方法要拿出来keep掉
在混线文件中添加proguard-project.txt文件中添加
-keep public class com.jzrh.easyappointment.android.fragment.SearchFargment{
public void onEvent*(**);
public void onEventMainThread*(**);
public void onEventBackgroundThread*(**);
public void onEventAsync*(**);
}
- 在android中用eventBus.2.4.jar中出现的问题
- android导出jar出现的问题
- Android EventBus在Fragment中不起作用的解决方法
- Android中jar包封装及调用中出现的问题及解决方案
- hbm文件如何打包在jar中不出现资源文件找不到的问题
- 解决在win7中用vs2010编译openssl中出现把警告当做错误的报错问题
- Android中EventBus的使用
- Android中EventBus的使用
- Android中EventBus的使用
- JavaScript在Android的WebView中出现一个问题
- Android开发:在AsyncTask中使用Dialog出现的问题
- Android动态加载jar DexClassLoader 出现ClassNotFound的问题
- eclipse中添加jar包+出现log的问题
- android 解决weixin微信jar包在打包的时候出现的java.io.IOException: Can't read问题
- android中为何第三方开源库生成的jar包不能直接放入libs中用?
- EventBus使用中遇到的问题
- 项目中应用eventbus解决的问题
- 在myeclipse中用maven进行项目的打包时出现内存泄露问题
- 从JBoss Seam 2.x迁移到JavaEE 7之四:事件机制
- WebSettings理想的设置方式
- Windows 中为git添加ssh认证
- 最长上升子序列
- 搭建Maven私服
- 在android中用eventBus.2.4.jar中出现的问题
- 第14th广东省赛总结
- 回溯法实现格雷码
- Java数组操作
- 交叉验证(Cross-Validation)
- STL 浅入 容器 (一)
- java 异常三
- CodeForces - 670C Cinema (map&模拟)水
- Js倒计时