接口传递网络请求结果

1)LoginListenerManager.java--监听工具

public class LoginListenerManager {
    public static LoginListenerManager ins ;
    //同步锁,避免线程非安全操作
    public static final Object LOCK = new Object() ;
    //弱引用,可以添加多个对登录状态的监听
    List<WeakReference<OnLoginStateChanageListener>> listenerList =new ArrayList<>();
    //单例
    public static LoginListenerManager getIns(){
        if(ins == null){
            ins = new LoginListenerManager() ;
        }
        return  ins ;
    }
    //实现此接口,获得传递的LoginResult
    public interface OnLoginStateChanageListener {
        void onLoginStateChange(LoginResult result) ;
    }
    //添加监听
    public void addLoginStateChangeListener(OnLoginStateChanageListener listener){
        WeakReference<OnLoginStateChanageListener> listenerWeakReference=new WeakReference<>(listener);
        synchronized (LOCK){
            listenerList.add(listenerWeakReference);
        }
    }
    //移除监听
    public void removeLoginStateChangeListener(OnLoginStateChanageListener listener){
       //do something
    }
 
    public void NotiyLoginStateChanage(LoginResult result){
        if(listenerList.size() != 0 ){
            synchronized (LOCK){
                for(int i=0;i<listenerList.size();i++){
                    OnLoginStateChanageListener listener =listenerList.get(i).get();
                    if(listener != null){
                        listener.onLoginStateChange(result);
                        listenerList.remove(listener);
                    }
 
                }
            }
        }
    }
}

2)NavigationDrawerFragment.java--添加监听,使用监听结果

public class NavigationDrawerFragment extends Fragment implements LoginListenerManager.OnLoginStateChanageListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //do someting...
        //添加监听
        LoginListenerManager.getIns().addLoginStateChangeListener(this);
    }
	//...do something...
    @Override
    public void onLoginStateChange(LoginResult result) {
 
        if (result != null && result.data.uid!=""){
            LoginBean.getInstance().setLoginTag(true);
	    //使用登陆结果设置界面
            refreshLoginView(result);
            LoginBean.getInstance().setLoginResult(result);
            LoginBean.getInstance().setVipTag(result.user.vip_member);
        }else{
            LoginBean.getInstance().setLoginTag(false);
        }
 
    }
}

3)请求数据,更新符合条件的监听结果

public class LoginActivity extends AppCompatActivity {
	//...do something...
	public void initData() {
			IBeanLoader iBeanLoader = new BeanLoaderImpl(getApplication());
			iBeanLoader.setCallback(new IBeanLoader.ILoadCallback<LoginResult>() {
				@Override
				public void onCacheComplete(int tag, LoginResult result) {
 
				}
 
				@Override
				public void onHttpComplete(int resultCode, int tag, LoginResult result) {
					if ( result != null && "success".equals(result.msg)) {
						//判断result符合条件时,启动更改监听结果
						LoginListenerManager.getIns().NotiyLoginStateChanage(result);
						//do something...
					} else if (result != null) {
						Toast toast = Toast.makeText(getApplication(), result.msg + ",请重新登录", Toast.LENGTH_SHORT);
						toast.show();
					} else {
						Toast toast = Toast.makeText(getApplication(), "登录失败,请重新登录", Toast.LENGTH_SHORT);
						toast.show();
					}
				}
 
				@Override
				public void onContentChange(int tag) {
 
				}
			});
			iBeanLoader.loadHttp(new LoginBean, 1);
	}
	//...do something...
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值