lmw
2023-06-13 4b7d8d9a038f6522df46d0f14fa07eb940a1b34d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package cn.sinata.xldutils.net.utils;
 
import java.lang.ref.WeakReference;
 
import cn.sinata.xldutils.activitys.BaseActivity;
import cn.sinata.xldutils.activitys.RecyclerListActivity;
import cn.sinata.xldutils.fragment.BaseFragment;
import cn.sinata.xldutils.fragment.RecyclerViewFragment;
import cn.sinata.xldutils.utils.Utils;
import cn.sinata.xldutils.xldUtils;
import io.reactivex.subscribers.DisposableSubscriber;
 
/**
 *
 * Created by liaoxiang on 16/7/11.
 */
public class ResultSubscriber<T> extends DisposableSubscriber<T> {
 
    WeakReference<BaseActivity> activities;
    WeakReference<BaseFragment> fragments;
 
    public ResultSubscriber(BaseActivity activity){
        activities = new WeakReference<>(activity);
        if (activity!=null) {
            activity.compositeSubscription.add(this);
        }
    }
 
    public ResultSubscriber(BaseFragment fragment){
        fragments = new WeakReference<>(fragment);
        if (fragment!=null && !fragment.isDetached()) {
            fragment.addDisposable(this);
        }
    }
 
    @Override
    public void onError(Throwable e) {
        dismissDialog();
        if (xldUtils.DEBUG) {
            e.printStackTrace();
        }
        Utils.systemErr(e);
    }
 
    @Override
    public void onComplete() {
 
    }
 
    @Override
    public void onNext(T t) {
        dismissDialog();
    }
 
    private void dismissDialog() {
        if (activities != null) {
            BaseActivity activity = activities.get();
            if (activity != null) {
                activity.dismissDialog();
                if (activity instanceof RecyclerListActivity) {
                    ((RecyclerListActivity) activity).setRefreshing(false);
                }
            }
        }
        if (fragments != null) {
            BaseFragment fragment = fragments.get();
            if (fragment != null) {
                fragment.dismissDialog();
                if (fragment instanceof RecyclerViewFragment) {
                    ((RecyclerViewFragment) fragment).setRefreshing(false);
                }
            }
        }
    }
}