Tag: otto

订阅者在使用Otto时不会被解雇

我在Android上尝试使用Otto,我试图将我的片段中的消息发送回活动。 这是我的代码的基础知识: 我的巴士提供商: public final class BusProvider { private static final Bus mInstance = new Bus(); private BusProvider() {} public static Bus getBusProviderInstance() { return mInstance; } } 我的活动有以下代码: public class MyActivity extends BaseActivity { // …. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); BusProvider.getBusProviderInstance().register(this); // …. } @OnClick(R.id.profile_image) public void onImageClicked() { // … […]

我如何有效地使用事件总线?

现在我正在探索一个Android学习项目的一些选项。 我正在尝试与我的rails api(也是一个学习项目)进行交流。 在做了一些研究之后,我想我已经确定了一个使用改造和otto的方案。 我最终得到的是这个。 当我想调用我的rails服务器(在这种情况下进行注册)时,我会在活动中执行此操作。 mBus.post(new SignupRequestEvent(new UserRequestParams(mName,mEmail,mPassword,mPasswordConfirmation ))); 然后在同一个活动中我有这个。 @Subscribe public void onSignupCompleted(SignupCompletedEvent event) { System.out.println(String.format(“in onSignupCompleted, got token = %s “, event.getParams().getToken())); } 这里的问题是,就目前而言,每个api请求类型和相应的响应类型都是一个唯一的事件类型,并且需要它自己的类,这看起来像很多样板代码。 例如,要处理登录和退出,我需要这两个类: public class SignupRequestEvent { protected UserRequestParams mSignupParams; public SignupRequestEvent(UserRequestParams signupParams) { mSignupParams = signupParams; } public UserRequestParams getParams() { return mSignupParams; } } public class SignupCompletedEvent { […]

使用Otto进行内存泄漏的Leakcanary报告

继续我的上一个问题 ,这是我无法摆脱的第二次内存泄漏.. 我读到我需要根据Activity和Fragment生命周期注册和取消注册我的静态Otto总线,所以我添加了注册并取消注册到onStop和onStart的调用…有一个触发事件然后由某些片段接收的按钮在Viewpager内部给我以下内存泄漏: D/LeakCanary﹕ In com.doesnthaveadomain.leo.calendartracker:1.0:1. D/LeakCanary﹕ * com.doesnthaveadomain.leo.calendartracker.MyFragment has leaked: D/LeakCanary﹕ * GC ROOT static com.doesnthaveadomain.leo.calendartracker.MyBus.BUS D/LeakCanary﹕ * references com.squareup.otto.Bus.handlersByType D/LeakCanary﹕ * references java.util.concurrent.ConcurrentHashMap.table D/LeakCanary﹕ * references array java.util.concurrent.ConcurrentHashMap$Node[].[3] D/LeakCanary﹕ * references java.util.concurrent.ConcurrentHashMap$Node.val D/LeakCanary﹕ * references java.util.concurrent.CopyOnWriteArraySet.al D/LeakCanary﹕ * references java.util.concurrent.CopyOnWriteArrayList.elements D/LeakCanary﹕ * references array java.lang.Object[].[0] D/LeakCanary﹕ * references com.squareup.otto.EventHandler.target D/LeakCanary﹕ * leaks com.doesnthaveadomain.leo.calendartracker.MyFragment […]