Commit 19b956db by konghaorui

私聊模块 补充防止 Rxjava 内存泄露逻辑

parent aa09a02c
...@@ -20,8 +20,8 @@ import java.util.List; ...@@ -20,8 +20,8 @@ import java.util.List;
public final class DemoGlobalConfig implements IConfigModule { public final class DemoGlobalConfig implements IConfigModule {
String APP_DOMAIN = "https://api.github.com/"; String APP_DOMAIN = "https://api.github.com/";
// public static String appEnv = YDLConstants.ENV_AUTO_TEST; // public static String appEnv = YDLConstants.ENV_AUTO_TEST;
// public static String appEnv = YDLConstants.ENV_PROD; public static String appEnv = YDLConstants.ENV_PROD;
public static String appEnv = YDLConstants.ENV_TEST; // public static String appEnv = YDLConstants.ENV_TEST;
@Override @Override
public void injectAppLifecycle(@NotNull Context context, @NotNull List<IAppLifecycles> lifecycles) { public void injectAppLifecycle(@NotNull Context context, @NotNull List<IAppLifecycles> lifecycles) {
......
...@@ -2,23 +2,24 @@ package com.yidianling.im.session.action; ...@@ -2,23 +2,24 @@ package com.yidianling.im.session.action;
import android.text.TextUtils; import android.text.TextUtils;
import com.yidianling.nimbase.business.session.actions.BaseAction;
import com.yidianling.im.R;
import com.yidianling.im.http.ImHttpImpl;
import com.yidianling.im.http.ImRetrofitApi;
import com.yidianling.im.http.param.ExpertParam;
import com.yidianling.router.im.IMExpertBuild;
import com.ydl.webview.H5Params; import com.ydl.webview.H5Params;
import com.ydl.webview.NewH5Activity; import com.ydl.webview.NewH5Activity;
import com.ydl.ydlcommon.base.lifecycle.ILifecycleable;
import com.ydl.ydlcommon.data.http.BaseResponse; import com.ydl.ydlcommon.data.http.BaseResponse;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.ydl.ydlcommon.data.http.ThrowableConsumer; import com.ydl.ydlcommon.data.http.ThrowableConsumer;
import com.ydl.ydlcommon.utils.remind.ToastHelper; import com.ydl.ydlcommon.utils.remind.ToastHelper;
import com.yidianling.im.R;
import com.yidianling.im.http.ImHttpImpl;
import com.yidianling.im.http.ImRetrofitApi;
import com.yidianling.im.http.param.ExpertParam;
import com.yidianling.nimbase.business.session.actions.BaseAction;
import com.yidianling.router.im.IMExpertBuild;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/** /**
* author : Zhangwenchao * author : Zhangwenchao
...@@ -35,10 +36,14 @@ public class OrderAction extends BaseAction { ...@@ -35,10 +36,14 @@ public class OrderAction extends BaseAction {
@Override @Override
public void onClick() { public void onClick() {
ILifecycleable lifecycleable = null;
if (getActivity() instanceof ILifecycleable) {
lifecycleable = (ILifecycleable)(getActivity());
}
//先根据uid判断用户类型:专家调一个接口,非专家调另外的接口 //先根据uid判断用户类型:专家调一个接口,非专家调另外的接口
ImRetrofitApi.Companion.getImJavaApi().getUserType(getAccount()) Disposable dis = ImRetrofitApi.Companion.getImJavaApi().getUserType(getAccount())
.subscribeOn(Schedulers.io()) .compose(RxUtils.applySchedulers(lifecycleable))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(res -> { .subscribe(res -> {
if (res.code == 200) { if (res.code == 200) {
Observable<BaseResponse<IMExpertBuild>> observable; Observable<BaseResponse<IMExpertBuild>> observable;
...@@ -48,8 +53,8 @@ public class OrderAction extends BaseAction { ...@@ -48,8 +53,8 @@ public class OrderAction extends BaseAction {
observable = ImHttpImpl.Companion.getInstance().getExpert(new ExpertParam(Integer.valueOf(getAccount()), 0)); observable = ImHttpImpl.Companion.getInstance().getExpert(new ExpertParam(Integer.valueOf(getAccount()), 0));
} }
observable.subscribeOn(Schedulers.io()) Disposable disposable = observable
.observeOn(AndroidSchedulers.mainThread()) .compose(RxUtils.applySchedulers())
.subscribe(resp -> { .subscribe(resp -> {
if (resp != null && resp.data != null && resp.data.shareData != null && !TextUtils.isEmpty(resp.data.shareData.order_url)) { if (resp != null && resp.data != null && resp.data.shareData != null && !TextUtils.isEmpty(resp.data.shareData.order_url)) {
NewH5Activity.start(getActivity(), new H5Params(resp.data.shareData.order_url + "?search=" + resp.data.shareData.doctorName, "订单")); NewH5Activity.start(getActivity(), new H5Params(resp.data.shareData.order_url + "?search=" + resp.data.shareData.doctorName, "订单"));
......
...@@ -32,12 +32,12 @@ import in.srain.cube.views.ptr.PtrDefaultHandler; ...@@ -32,12 +32,12 @@ import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout; import in.srain.cube.views.ptr.PtrFrameLayout;
import in.srain.cube.views.ptr.PtrHandler; import in.srain.cube.views.ptr.PtrHandler;
import in.srain.cube.views.ptr.header.MaterialHeader; import in.srain.cube.views.ptr.header.MaterialHeader;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable;
/** /**
* 动态消息列表 * 动态消息列表
*/ */
public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler { public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler{
String title = ""; String title = "";
...@@ -106,7 +106,7 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler { ...@@ -106,7 +106,7 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
store_house_ptr_frame.setPtrHandler(this); store_house_ptr_frame.setPtrHandler(this);
store_house_ptr_frame.addPtrUIHandler(header); store_house_ptr_frame.addPtrUIHandler(header);
adapter = new MsgListAdapter(this, type); adapter = new MsgListAdapter(this, type,this);
lv_content.setAdapter(adapter); lv_content.setAdapter(adapter);
lv_content.setEmptyView(ll_empty); lv_content.setEmptyView(ll_empty);
...@@ -118,9 +118,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler { ...@@ -118,9 +118,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
private void allMarkReaded() { private void allMarkReaded() {
showProgressDialog(""); showProgressDialog("");
httpHelper.updateRead(new ReadParam(type)) Disposable disposable = httpHelper.updateRead(new ReadParam(type))
.compose(RxUtils.applySchedulers(this))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(updateStatusBean -> { .subscribe(updateStatusBean -> {
dismissProgressDialog(); dismissProgressDialog();
if (updateStatusBean != null) { if (updateStatusBean != null) {
...@@ -147,9 +147,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler { ...@@ -147,9 +147,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
page = 1; page = 1;
} }
httpHelper.getMsgList(new MsgListParam(page + "", type)) Disposable dis = httpHelper.getMsgList(new MsgListParam(page + "", type))
.compose(RxUtils.applySchedulers(this))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(msgData -> { .subscribe(msgData -> {
LogUtil.d("data fetch compelete"); LogUtil.d("data fetch compelete");
store_house_ptr_frame.refreshComplete(); store_house_ptr_frame.refreshComplete();
......
...@@ -28,11 +28,12 @@ import in.srain.cube.views.ptr.PtrHandler; ...@@ -28,11 +28,12 @@ import in.srain.cube.views.ptr.PtrHandler;
import in.srain.cube.views.ptr.header.MaterialHeader; import in.srain.cube.views.ptr.header.MaterialHeader;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
/** /**
* 系统消息列表 * 系统消息列表
*/ */
public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler { public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler{
PtrFrameLayout store_house_ptr_frame; PtrFrameLayout store_house_ptr_frame;
ListView lv_content; ListView lv_content;
...@@ -99,9 +100,9 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler ...@@ -99,9 +100,9 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler
} }
ImHttp httpHelper = ImHttpImpl.Companion.getInstance(); ImHttp httpHelper = ImHttpImpl.Companion.getInstance();
httpHelper.getSysMsgList(new MsgListParam(page + "", type)) Disposable disposable = httpHelper.getSysMsgList(new MsgListParam(page + "", type))
.compose(RxUtils.applySchedulers(this))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(systemMsgBeans -> { .subscribe(systemMsgBeans -> {
store_house_ptr_frame.refreshComplete(); store_house_ptr_frame.refreshComplete();
if (systemMsgBeans.isEmpty()) { if (systemMsgBeans.isEmpty()) {
...@@ -112,7 +113,7 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler ...@@ -112,7 +113,7 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler
newTemps.addAll(adapter.getDataList()); newTemps.addAll(adapter.getDataList());
adapter.update(newTemps); adapter.update(newTemps);
if (!loadMore) { if (!loadMore) {
Observable.timer(300, TimeUnit.MILLISECONDS) Disposable dis = Observable.timer(300, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> { .subscribe(aLong -> {
//滚动到底部 //滚动到底部
......
...@@ -10,6 +10,7 @@ import com.ydl.webview.H5Params; ...@@ -10,6 +10,7 @@ import com.ydl.webview.H5Params;
import com.ydl.webview.NewH5Activity; import com.ydl.webview.NewH5Activity;
import com.ydl.ydlcommon.adapter.CommonAdapter; import com.ydl.ydlcommon.adapter.CommonAdapter;
import com.ydl.ydlcommon.base.BaseActivity; import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.base.lifecycle.ILifecycleable;
import com.ydl.ydlcommon.data.http.RxUtils; import com.ydl.ydlcommon.data.http.RxUtils;
import com.ydl.ydlcommon.data.http.ThrowableConsumer; import com.ydl.ydlcommon.data.http.ThrowableConsumer;
import com.ydl.ydlcommon.utils.StringUtils; import com.ydl.ydlcommon.utils.StringUtils;
...@@ -28,13 +29,14 @@ import org.jetbrains.annotations.NotNull; ...@@ -28,13 +29,14 @@ import org.jetbrains.annotations.NotNull;
import java.util.Map; import java.util.Map;
import de.greenrobot.event.EventBus; import de.greenrobot.event.EventBus;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable;
/** /**
* 消息adapter * 消息adapter
* Created by softrice on 15/12/10. * Created by softrice on 15/12/10.
*/ */
public class MsgListAdapter extends CommonAdapter<MsgData> { public class MsgListAdapter extends CommonAdapter<MsgData> {
private ILifecycleable lifecycleable;
private Activity context; private Activity context;
private int type = 0;//消息类型 private int type = 0;//消息类型
...@@ -44,9 +46,10 @@ public class MsgListAdapter extends CommonAdapter<MsgData> { ...@@ -44,9 +46,10 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
private ImHttp httpHelper; private ImHttp httpHelper;
public MsgListAdapter(Activity context, int type) { public MsgListAdapter(Activity context, int type,ILifecycleable lifecycleable) {
this.context = context; this.context = context;
this.type = type; this.type = type;
this.lifecycleable = lifecycleable;
httpHelper = ImHttpImpl.Companion.getInstance(); httpHelper = ImHttpImpl.Companion.getInstance();
} }
...@@ -109,9 +112,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> { ...@@ -109,9 +112,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
if (fla || boo) { if (fla || boo) {
//跟新未读 //跟新未读
httpHelper.getMsgDetail(new MsgDetailParam(mDataList.get(position).id)) Disposable dis = httpHelper.getMsgDetail(new MsgDetailParam(mDataList.get(position).id))
.compose(RxUtils.applySchedulers(lifecycleable))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(msgDetail -> { .subscribe(msgDetail -> {
mDataList.get(position).is_read = 2; mDataList.get(position).is_read = 2;
notifyDataSetChanged(); notifyDataSetChanged();
...@@ -125,9 +128,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> { ...@@ -125,9 +128,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
return;//如果是动态消息则到此结束,其它消息类型走下面流程 return;//如果是动态消息则到此结束,其它消息类型走下面流程
} }
((BaseActivity) context).showProgressDialog("正在中转"); ((BaseActivity) context).showProgressDialog("正在中转");
httpHelper.getMsgDetail(new MsgDetailParam(mDataList.get(position).id)) Disposable di = httpHelper.getMsgDetail(new MsgDetailParam(mDataList.get(position).id))
.compose(RxUtils.applySchedulers(lifecycleable))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(msgDetail -> { .subscribe(msgDetail -> {
mDataList.get(position).is_read = 2; mDataList.get(position).is_read = 2;
((BaseActivity) context).dismissProgressDialog(); ((BaseActivity) context).dismissProgressDialog();
......
...@@ -159,10 +159,9 @@ class NewMultiMessageFragment : BaseFragment() { ...@@ -159,10 +159,9 @@ class NewMultiMessageFragment : BaseFragment() {
*/ */
fun requestTopUnReadNumber() { fun requestTopUnReadNumber() {
if (ImIn.getUserInfo()?.uid != "0") { if (ImIn.getUserInfo()?.uid != "0") {
ImHttpImpl.getInstance().getUnreadMessage(UnreadParam("${ImIn.getUserInfo()?.uid}")) var dis = ImHttpImpl.getInstance().getUnreadMessage(UnreadParam("${ImIn.getUserInfo()?.uid}"))
.compose<UnreadMessageBean>(RxUtils.resultJavaData()) .compose<UnreadMessageBean>(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io()) .compose(RxUtils.applySchedulers(this))
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ it -> .subscribe({ it ->
resetTopUnReadNumber(it) resetTopUnReadNumber(it)
}, { t -> }, { t ->
...@@ -269,9 +268,8 @@ class NewMultiMessageFragment : BaseFragment() { ...@@ -269,9 +268,8 @@ class NewMultiMessageFragment : BaseFragment() {
* 全部已读(私聊是单独处理的) * 全部已读(私聊是单独处理的)
*/ */
fun markAllMessageRead() { fun markAllMessageRead() {
ImHttpImpl.getInstance().clearMessage(ClearMessageParam("${ImIn.getUserInfo()?.uid}", "1")) var dis = ImHttpImpl.getInstance().clearMessage(ClearMessageParam("${ImIn.getUserInfo()?.uid}", "1"))
.subscribeOn(Schedulers.io()) .compose(RxUtils.applySchedulers(this))
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ it -> .subscribe({ it ->
if (it.data) { if (it.data) {
//清除私聊群聊未读数 //清除私聊群聊未读数
......
...@@ -21,8 +21,6 @@ import com.yidianling.im.ui.page.widget.ChatUnusualView ...@@ -21,8 +21,6 @@ import com.yidianling.im.ui.page.widget.ChatUnusualView
import com.yidianling.im.ui.param.ChatParam import com.yidianling.im.ui.param.ChatParam
import com.yidianling.router.RouterManager import com.yidianling.router.RouterManager
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.im_chat_fragment_layout.* import kotlinx.android.synthetic.main.im_chat_fragment_layout.*
/** /**
...@@ -84,10 +82,9 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener { ...@@ -84,10 +82,9 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
var selectType: Int = if (mChatModelType == ChatModelType.ALL) 0 else if (mChatModelType == ChatModelType.SERVICING) 1 else 2 var selectType: Int = if (mChatModelType == ChatModelType.ALL) 0 else if (mChatModelType == ChatModelType.SERVICING) 1 else 2
if (ImIn.getUserInfo()?.uid != "0") { if (ImIn.getUserInfo()?.uid != "0") {
ImHttpImpl.getInstance().getAllChatMessage(ChatParam("${ImIn.getUserInfo()?.uid}", "${selectType}")) var dis = ImHttpImpl.getInstance().getAllChatMessage(ChatParam("${ImIn.getUserInfo()?.uid}", "${selectType}"))
.compose(RxUtils.applySchedulers(this))
.compose<ChatModelBean>(RxUtils.resultJavaData()) .compose<ChatModelBean>(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ it -> .subscribe({ it ->
if (it.before.data.size != 0 || it.nomal.data.size != 0) { if (it.before.data.size != 0 || it.nomal.data.size != 0) {
setData(it) setData(it)
...@@ -207,7 +204,7 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener { ...@@ -207,7 +204,7 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
private fun initListData() { private fun initListData() {
chatAdapter = ChatAdapter(context, showData) chatAdapter = ChatAdapter(context, showData,this)
chatAdapter?.setlistener(object : ChatAdapter.ChatRecyclerViewCallback { chatAdapter?.setlistener(object : ChatAdapter.ChatRecyclerViewCallback {
override fun onRefresh() { override fun onRefresh() {
getChatMessageData() getChatMessageData()
......
...@@ -19,8 +19,6 @@ import com.yidianling.im.ui.page.fragment.view.InteractFooterItemView ...@@ -19,8 +19,6 @@ import com.yidianling.im.ui.page.fragment.view.InteractFooterItemView
import com.yidianling.im.ui.page.widget.ChatUnusualView import com.yidianling.im.ui.page.widget.ChatUnusualView
import com.yidianling.im.ui.param.InteractMessageParam import com.yidianling.im.ui.param.InteractMessageParam
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.im_interact_fragment.* import kotlinx.android.synthetic.main.im_interact_fragment.*
/** /**
...@@ -91,10 +89,9 @@ class InteractFragment : BaseFragment(), XRecyclerView.LoadingListener { ...@@ -91,10 +89,9 @@ class InteractFragment : BaseFragment(), XRecyclerView.LoadingListener {
if (ImIn.getUserInfo()?.uid != "0") { if (ImIn.getUserInfo()?.uid != "0") {
// 由于当前方法会因为各种因素多次调用,因此在接口返回值内判断只有在pageOn=1或者onLoadMore得时候,才将返回值加入展示列表中 // 由于当前方法会因为各种因素多次调用,因此在接口返回值内判断只有在pageOn=1或者onLoadMore得时候,才将返回值加入展示列表中
ImHttpImpl.getInstance().getInteractMessage(InteractMessageParam("${ImIn.getUserInfo()?.uid}", "${requestPage}", "${pageSize}")) var dis = ImHttpImpl.getInstance().getInteractMessage(InteractMessageParam("${ImIn.getUserInfo()?.uid}", "${requestPage}", "${pageSize}"))
.compose(RxUtils.applySchedulers(this))
.compose(RxUtils.resultJavaData()) .compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ it -> .subscribe({ it ->
interact_recyclerview.refreshComplete() interact_recyclerview.refreshComplete()
// 请求页面大于当前页面,才进行数据操作 // 请求页面大于当前页面,才进行数据操作
......
...@@ -3,20 +3,18 @@ package com.yidianling.im.ui.page.fragment ...@@ -3,20 +3,18 @@ package com.yidianling.im.ui.page.fragment
import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.LinearLayoutManager
import android.view.View import android.view.View
import com.jcodecraeer.xrecyclerview.XRecyclerView import com.jcodecraeer.xrecyclerview.XRecyclerView
import com.ydl.ydlcommon.base.BaseFragment
import com.ydl.ydlcommon.data.http.RxUtils
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.im.R import com.yidianling.im.R
import com.yidianling.im.event.MessageListRefreshEvent
import com.yidianling.im.http.ImHttpImpl import com.yidianling.im.http.ImHttpImpl
import com.yidianling.im.router.ImIn import com.yidianling.im.router.ImIn
import com.yidianling.im.ui.page.fragment.adapter.NoticeAdapter import com.yidianling.im.ui.page.fragment.adapter.NoticeAdapter
import com.yidianling.im.ui.page.fragment.bean.NoticeItemBean import com.yidianling.im.ui.page.fragment.bean.NoticeItemBean
import com.yidianling.im.ui.page.widget.ChatUnusualView import com.yidianling.im.ui.page.widget.ChatUnusualView
import com.yidianling.im.ui.param.NoticeParam import com.yidianling.im.ui.param.NoticeParam
import com.ydl.ydlcommon.base.BaseFragment
import com.yidianling.im.event.MessageListRefreshEvent
import com.ydl.ydlcommon.data.http.RxUtils
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.im_notice_fragment.* import kotlinx.android.synthetic.main.im_notice_fragment.*
/** /**
...@@ -58,10 +56,9 @@ class NoticeFragment : BaseFragment(), XRecyclerView.LoadingListener { ...@@ -58,10 +56,9 @@ class NoticeFragment : BaseFragment(), XRecyclerView.LoadingListener {
*/ */
fun getNoticeMessageData() { fun getNoticeMessageData() {
if (ImIn.getUserInfo()?.uid != "0") { if (ImIn.getUserInfo()?.uid != "0") {
ImHttpImpl.getInstance().getNoticeMessage(NoticeParam("${ImIn.getUserInfo()?.uid}")) var dis = ImHttpImpl.getInstance().getNoticeMessage(NoticeParam("${ImIn.getUserInfo()?.uid}"))
.compose(RxUtils.applySchedulers(this))
.compose(RxUtils.resultJavaData()) .compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ it -> .subscribe({ it ->
noticeList.clear() noticeList.clear()
// content为空的不展示 // content为空的不展示
......
...@@ -10,6 +10,7 @@ import android.view.ViewGroup ...@@ -10,6 +10,7 @@ import android.view.ViewGroup
import com.netease.nimlib.sdk.NIMClient import com.netease.nimlib.sdk.NIMClient
import com.netease.nimlib.sdk.msg.MsgService import com.netease.nimlib.sdk.msg.MsgService
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum
import com.ydl.ydlcommon.base.lifecycle.ILifecycleable
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
...@@ -27,13 +28,12 @@ import com.yidianling.im.ui.page.fragment.bean.ChatItemBean ...@@ -27,13 +28,12 @@ import com.yidianling.im.ui.page.fragment.bean.ChatItemBean
import com.yidianling.im.ui.page.fragment.view.ChatItemView import com.yidianling.im.ui.page.fragment.view.ChatItemView
import com.yidianling.im.ui.page.fragment.view.ChatTimeItemView import com.yidianling.im.ui.page.fragment.view.ChatTimeItemView
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import io.reactivex.android.schedulers.AndroidSchedulers
/** /**
* 互动列表适配器 * 互动列表适配器
* Created by xj on 2019/10/14. * Created by xj on 2019/10/14.
*/ */
class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBean>): RecyclerView.Adapter<RecyclerView.ViewHolder>() { class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBean>,private var lifecycleable: ILifecycleable<*>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
companion object { companion object {
...@@ -138,9 +138,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea ...@@ -138,9 +138,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
private fun delete(bean: ChatItemBean) { private fun delete(bean: ChatItemBean) {
LogHelper.getInstance().writeLogSync("删除聊天:uid = " + bean.toUid) LogHelper.getInstance().writeLogSync("删除聊天:uid = " + bean.toUid)
ImHttpImpl.getInstance().rmHistory(RmHistoryParam(bean.toUid.toString(), 1)) var dis = ImHttpImpl.getInstance().rmHistory(RmHistoryParam(bean.toUid.toString(), 1))
.compose(RxUtils.applySchedulers(lifecycleable))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ o -> .subscribe({ o ->
LogHelper.getInstance().writeLogSync("删除聊天成功:uid = " + bean.toUid) LogHelper.getInstance().writeLogSync("删除聊天成功:uid = " + bean.toUid)
NIMClient.getService(MsgService::class.java).clearChattingHistory(bean.toUid.toString(), SessionTypeEnum.P2P) NIMClient.getService(MsgService::class.java).clearChattingHistory(bean.toUid.toString(), SessionTypeEnum.P2P)
...@@ -153,9 +153,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea ...@@ -153,9 +153,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
private fun deleteItem(bean: ChatItemBean) { private fun deleteItem(bean: ChatItemBean) {
ImHttpImpl.getInstance().rmTalk(RmTalkParam(bean.toUid.toString())) var dis = ImHttpImpl.getInstance().rmTalk(RmTalkParam(bean.toUid.toString()))
.compose(RxUtils.applySchedulers(lifecycleable))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ o -> .subscribe({ o ->
NIMClient.getService(MsgService::class.java).clearUnreadCount(bean.toUid.toString(), SessionTypeEnum.P2P) NIMClient.getService(MsgService::class.java).clearUnreadCount(bean.toUid.toString(), SessionTypeEnum.P2P)
NIMClient.getService(MsgService::class.java).clearUnreadCount(bean.toUid.toString(), SessionTypeEnum.Team) NIMClient.getService(MsgService::class.java).clearUnreadCount(bean.toUid.toString(), SessionTypeEnum.Team)
...@@ -170,9 +170,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea ...@@ -170,9 +170,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
private fun toTop(bean: ChatItemBean, istop: Int) { private fun toTop(bean: ChatItemBean, istop: Int) {
LogHelper.getInstance().writeLogSync("置顶聊天:uid = " + bean.toUid.toString() + LogHelper.getInstance().writeLogSync("置顶聊天:uid = " + bean.toUid.toString() +
"取消置顶 = " + (istop == 0)) "取消置顶 = " + (istop == 0))
ImHttpImpl.getInstance().topMessage(TopMessageParam(bean.toUid.toString(), 1, istop)) var dis = ImHttpImpl.getInstance().topMessage(TopMessageParam(bean.toUid.toString(), 1, istop))
.compose(RxUtils.applySchedulers(lifecycleable))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ o -> .subscribe({ o ->
LogHelper.getInstance().writeLogSync("置顶聊天成功:uid = " + bean.toUid.toString() + LogHelper.getInstance().writeLogSync("置顶聊天成功:uid = " + bean.toUid.toString() +
"取消置顶 = " + (istop == 0)) "取消置顶 = " + (istop == 0))
......
...@@ -10,6 +10,7 @@ import android.widget.ImageView; ...@@ -10,6 +10,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.yidianling.common.tools.ToastUtil; import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R; import com.yidianling.im.R;
import com.yidianling.nimbase.api.model.session.SessionCustomization; import com.yidianling.nimbase.api.model.session.SessionCustomization;
...@@ -27,6 +28,7 @@ import java.net.URLEncoder; ...@@ -27,6 +28,7 @@ import java.net.URLEncoder;
import java.util.List; import java.util.List;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
/** /**
...@@ -139,9 +141,7 @@ public abstract class YDLBaseMessageActivity extends UI { ...@@ -139,9 +141,7 @@ public abstract class YDLBaseMessageActivity extends UI {
if (ActionHandlerStorage.getL(sessionId).getUserType() == 2) { if (ActionHandlerStorage.getL(sessionId).getUserType() == 2) {
// 专家 // 专家
// 调取接口获取专家状态 // 调取接口获取专家状态
ServiceImpl.Companion.getInstance().getDoctorChatStatus(Long.parseLong(ActionHandlerStorage.getL(sessionId).getInfo().toUid)) Disposable dis = ServiceImpl.Companion.getInstance().getDoctorChatStatus(Long.parseLong(ActionHandlerStorage.getL(sessionId).getInfo().toUid))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(chatStatusBean -> { .subscribe(chatStatusBean -> {
int status = chatStatusBean.data.getStatus(); int status = chatStatusBean.data.getStatus();
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.ydl.ydlcommon.data.http package com.ydl.ydlcommon.data.http
import com.ydl.ydlcommon.base.BaseApp import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.base.lifecycle.ILifecycleable
import com.ydl.ydlcommon.mvp.base.IView import com.ydl.ydlcommon.mvp.base.IView
import com.ydl.ydlcommon.mvp.lce.ILceView import com.ydl.ydlcommon.mvp.lce.ILceView
import com.ydl.ydlcommon.utils.RxLifecycleUtils import com.ydl.ydlcommon.utils.RxLifecycleUtils
...@@ -89,6 +90,7 @@ object RxUtils { ...@@ -89,6 +90,7 @@ object RxUtils {
* 自动调用 showLoading/hideLoading 方法 * 自动调用 showLoading/hideLoading 方法
* @param view LceView 强转使用 * @param view LceView 强转使用
*/ */
@JvmStatic
fun <T> applySchedulers(view: ILceView): ObservableTransformer<T, T> { fun <T> applySchedulers(view: ILceView): ObservableTransformer<T, T> {
return ObservableTransformer { observable -> return ObservableTransformer { observable ->
observable.subscribeOn(Schedulers.io()) observable.subscribeOn(Schedulers.io())
...@@ -107,6 +109,7 @@ object RxUtils { ...@@ -107,6 +109,7 @@ object RxUtils {
* RxJava 线程协调 / RxLifecycle绑定方法 * RxJava 线程协调 / RxLifecycle绑定方法
* *
*/ */
@JvmStatic
fun <T> applySchedulers(view: IView): ObservableTransformer<T, T> { fun <T> applySchedulers(view: IView): ObservableTransformer<T, T> {
return ObservableTransformer { observable -> return ObservableTransformer { observable ->
observable.subscribeOn(Schedulers.io()) observable.subscribeOn(Schedulers.io())
...@@ -116,9 +119,23 @@ object RxUtils { ...@@ -116,9 +119,23 @@ object RxUtils {
} }
} }
@JvmStatic
fun <T> applySchedulers(iLifecycleable: ILifecycleable<*> ?= null): ObservableTransformer<T, T> {
if (iLifecycleable == null){
return applySchedulers()
}
return ObservableTransformer { observable ->
observable.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(iLifecycleable))
}
}
/** /**
* RxJava 线程协调方法 * RxJava 线程协调方法
*/ */
@JvmStatic
fun <T> applySchedulers(): ObservableTransformer<T, T> { fun <T> applySchedulers(): ObservableTransformer<T, T> {
return ObservableTransformer { observable -> return ObservableTransformer { observable ->
observable.subscribeOn(Schedulers.io()) observable.subscribeOn(Schedulers.io())
......
...@@ -83,7 +83,7 @@ class RxLifecycleUtils private constructor() { ...@@ -83,7 +83,7 @@ class RxLifecycleUtils private constructor() {
/** /**
* 绑定 Activity/Fragment 的生命周期 * 绑定 Activity/Fragment 的生命周期
* *
* @param view * @param activity
* @param <T> * @param <T>
* @return * @return
</T> */ </T> */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment