diff --git a/TMessagesProj/src/main/java/org/telegram/group/GroupViewModel.java b/TMessagesProj/src/main/java/org/telegram/group/GroupViewModel.java index f3386ed..fe1fe1d 100644 --- a/TMessagesProj/src/main/java/org/telegram/group/GroupViewModel.java +++ b/TMessagesProj/src/main/java/org/telegram/group/GroupViewModel.java @@ -16,13 +16,12 @@ import org.telegram.network.error.ErrorConsumer; import org.telegram.tgnet.TLRPC; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import io.reactivex.BackpressureStrategy; import io.reactivex.Completable; @@ -32,6 +31,7 @@ import io.reactivex.ObservableOnSubscribe; import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; import io.reactivex.functions.Action; import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; @@ -65,10 +65,7 @@ map.put("gn", title); map.put("uid", user.id + ""); map.put("up", user.phone);//手机号码 - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date date = dateFormat.parse(time); - date.setTime(date.getTime() + 24L * 60L * 60L * 1000L + 300L * 1000); - map.put("ed", dateFormat.format(date));//时间 + map.put("ed", time);//时间 map.put("dt", a == 1 ? "1" : "2");//1:自动解散,2:自由退出 boolean flag = false; for (LocalCanche item : @@ -86,6 +83,7 @@ localCanche.setType(a); canches.add(localCanche); } + observableEmitter.onNext(map); observableEmitter.onComplete(); } @@ -311,10 +309,10 @@ * 检查缓存,如果没成功则一直上传 */ public static void checkCanche() { + rang(); Flowable.just("").map(new Function() { @Override public Object apply(String s) throws Exception { - Log.e("apply", "size: " + canches.size()); String cancheStr = ApplicationLoader.applicationContext .getSharedPreferences("group_from_cctv", Activity.MODE_PRIVATE).getString("canche", ""); List localCanches = GsonUtils.getsGson().fromJson(cancheStr, new TypeToken>() { @@ -329,7 +327,7 @@ break; } } - if(!flag){ + if (!flag) { tmpList.add(item); } } @@ -364,15 +362,12 @@ }).concatMapDelayError(new Function>() { @Override public Publisher apply(LocalCanche localCanche) throws Exception { - Thread.sleep(5000); return create(localCanche.getGroupId(), localCanche.getTitle(), localCanche.getType(), localCanche.getTime()) .andThen(Observable.just(localCanche)).toFlowable(BackpressureStrategy.BUFFER); } }).subscribe(new Consumer() { @Override public void accept(LocalCanche s) throws Exception { - Log.e("apply3", "size: " + canches.size()); - for (int i = 0; i < canches.size(); i++) { if (canches.get(i).getGroupId().equals(s.getGroupId())) { canches.remove(i); @@ -383,24 +378,42 @@ break; } } - Log.e("apply4", "size: " + canches.size()); - } }, new ErrorConsumer() { @Override public void error(Throwable throwable, @NonNull String message) { + Log.e("apply2", "error"); + throwable.printStackTrace(); - checkCanche(); } }, new Action() { @Override public void run() throws Exception { - if (canches.size() != 0) - checkCanche(); } }); } + private static Disposable disposable; + + private static void rang() { + if (disposable != null && !disposable.isDisposed()) { + //当前有查找,不要重新请求 + return; + } + disposable = Flowable.interval(60, TimeUnit.SECONDS).observeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(Long aLong) throws Exception { + Log.e("apply", "例行查询"); + if (canches.size() != 0) { + checkCanche(); + } else { + disposable.dispose(); + } + } + }, new ErrorConsumer()); + } + /** * 检查一个群组是否能退出
* 1.自动解散,需要等到时间到了才能退出