天天看點

直播教育系統開發中,如何避免記憶體洩露

直播教育系統開發的過程中,在Activity等元件中使用網絡服務的異步人物的時候,一般需要在元件銷毀的生命周期中進行手動取消任務判斷,不然的話可能會造成記憶體洩漏。為了避免這種現象,在開發中合理使用RxLifeCycle,可簡化代碼的處理細節,接下來小編就為大家介紹下,看看該如何使用。

直播教育系統開發中,如何避免記憶體洩露

一、元件繼承

1、Activity基類繼承RxAppCompatActivity。

2、Fragment基類繼承RxFragment。

3、DialogFragment基類繼承RxDialogFragment。

二、聲明綁定

相關代碼如下:

private Observable<List<NoticeBean>> getData(int p) {
    String lastId;
    NoticeBean noticeBean=mNoticeAdapter!=null?mNoticeAdapter.getLastData():null;
    if(p==1){
      lastId="0";
    }else if(noticeBean!=null){
        lastId=noticeBean.getId();
    }else{
        lastId="0";
    }
    return MainAPI.getMessageList(mType,lastId+"").compose(this.<List<NoticeBean>>bindToLifecycle());
}
在compose方法中聲明綁定政策,bindToLifecycle()是自動模式。           

三、自定義元件,可以拓展實作自己的生命周期感覺元件

public  abstract class RxViewProxy extends BaseViewProxy implements LifecycleProvider<FragmentEvent> {
    private String TAG="RxViewProxy";

    private final BehaviorSubject<FragmentEvent> lifecycleSubject = BehaviorSubject.create();

    @Override
    @NonNull
    @CheckResult
    public final Observable<FragmentEvent> lifecycle() {
        return lifecycleSubject.hide();
    }

    @Override
    @NonNull
    @CheckResult
    public final <T> LifecycleTransformer<T> bindUntilEvent(@NonNull FragmentEvent event) {
        return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
    }

    @Override
    @NonNull
    @CheckResult
    public final <T> LifecycleTransformer<T> bindToLifecycle() {
        return RxLifecycleAndroid.bindFragment(lifecycleSubject);
    }

    @Override
    @CallSuper
    public void onAttach(android.app.Activity activity) {
        super.onAttach(activity);
        lifecycleSubject.onNext(FragmentEvent.ATTACH);
    }           

通過實作LifecycleProvider接口,來實作自定義元件。

以上就是直播教育系統開發中,如何利用RxLifeCycle避免記憶體洩露。

聲明:以上内容為作者本人原創,未經作者本人同意,禁止轉載,否則将追究相關法律責任。

繼續閱讀