android-discuss icon indicating copy to clipboard operation
android-discuss copied to clipboard

Eventbus可以实现自动注销吗

Open ruanshanshan opened this issue 6 years ago • 3 comments

使用Eventbus过程中,如果忘记unregister,可能会导致内心泄露。有办法实现自动注销吗

ruanshanshan avatar Apr 11 '18 03:04 ruanshanshan

在base的生命周期方法中unregister,用try catch包裹,简单粗暴

hss01248 avatar Apr 12 '18 03:04 hss01248

比楼上稍微好一点的做法是base里有一个方法register,让base去做只要register了就unregister的事

RubiTree avatar Apr 12 '18 06:04 RubiTree

我的做法是在 BaseActivity 里面进行处理,在对应的生命周期进行注册或解绑;

public abstract class BaseActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 注册
        EventBus.getDefault().register(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 解绑
        if (isFinishing()) {
            EventBus.getDefault().unregister(this);
        }
    }

}

希望可以帮到你

danielzwhe avatar Oct 22 '18 09:10 danielzwhe