Browse Source

检查其他地方的重复点击事件、聊天页mapper稳定性测试、推送类型及其响应与pc端对应

master
LiuSiXiang-007 1 year ago
parent
commit
0e6d21c229
  1. 13
      app/src/main/java/com/kanglai/push/ui/fragment/LinkFragment.java
  2. 8
      app/src/main/java/com/kanglai/push/ui/fragment/MessageFragment.java
  3. 2
      app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java
  4. 4
      app/src/main/java/com/kanglai/push/ui/vm/MessageViewModel.java
  5. 22
      app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java
  6. 18
      library/umeng/src/main/java/com/dolphin/umeng/UmengClient.java

13
app/src/main/java/com/kanglai/push/ui/fragment/LinkFragment.java

@ -55,8 +55,11 @@ public class LinkFragment extends BaseFragment<FragmentLinkBinding, LinkViewMode
public LinkAdapter mAdapter; public LinkAdapter mAdapter;
/** 分类菜单 */ /** 分类菜单 */
private MenuClassifyAdapter mMenuClassifyAdapter; private MenuClassifyAdapter mMenuClassifyAdapter;
public static String USER_LINK_ID = "USER_LINK_ID"; public static String USER_LINK_ID = "USER_LINK_ID";
public Boolean isSkip = true; // 防止重复点击
@Override @Override
public int setContentView(LayoutInflater inflater, @Nullable ViewGroup parentContainer, @Nullable Bundle savedInstanceState) { public int setContentView(LayoutInflater inflater, @Nullable ViewGroup parentContainer, @Nullable Bundle savedInstanceState) {
return R.layout.fragment_link; return R.layout.fragment_link;
@ -97,6 +100,8 @@ public class LinkFragment extends BaseFragment<FragmentLinkBinding, LinkViewMode
mMenuClassifyAdapter.setOnItemHeaderClickListener(new IndexableHeaderAdapter.OnItemHeaderClickListener<MenuEntity>() { mMenuClassifyAdapter.setOnItemHeaderClickListener(new IndexableHeaderAdapter.OnItemHeaderClickListener<MenuEntity>() {
@Override @Override
public void onItemClick(View v, int currentPosition, MenuEntity entity) { public void onItemClick(View v, int currentPosition, MenuEntity entity) {
if (!isSkip) return;
isSkip = false;
/** 头部菜单点击事件 */ /** 头部菜单点击事件 */
switch (currentPosition) { switch (currentPosition) {
case 0: case 0:
@ -125,6 +130,8 @@ public class LinkFragment extends BaseFragment<FragmentLinkBinding, LinkViewMode
mAdapter.setOnItemContentClickListener(new IndexableAdapter.OnItemContentClickListener<ConcernFan>() { mAdapter.setOnItemContentClickListener(new IndexableAdapter.OnItemContentClickListener<ConcernFan>() {
@Override @Override
public void onItemClick(View v, int originalPosition, int currentPosition, ConcernFan entity) { public void onItemClick(View v, int originalPosition, int currentPosition, ConcernFan entity) {
if (!isSkip) return;
isSkip = false;
/** 点击详情 */ /** 点击详情 */
Intent intent = new Intent(getActivity(), LinkDetailActivity.class); Intent intent = new Intent(getActivity(), LinkDetailActivity.class);
intent.putExtra(CommonConstant.USER_LINK_ID, entity.getId()); intent.putExtra(CommonConstant.USER_LINK_ID, entity.getId());
@ -200,4 +207,10 @@ public class LinkFragment extends BaseFragment<FragmentLinkBinding, LinkViewMode
super.onResume(); super.onResume();
mViewModel.loadFan(); mViewModel.loadFan();
} }
@Override
public void onStart() {
super.onStart();
isSkip = true;
}
} }

8
app/src/main/java/com/kanglai/push/ui/fragment/MessageFragment.java

@ -19,6 +19,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.ClickUtils;
import com.blankj.utilcode.util.CollectionUtils; import com.blankj.utilcode.util.CollectionUtils;
import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.StringUtils; import com.blankj.utilcode.util.StringUtils;
@ -32,6 +33,7 @@ import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.animator.SwipeDismissItemAnimator; import com.h6ah4i.android.widget.advrecyclerview.animator.SwipeDismissItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager; import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager;
import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager; import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager;
import com.jakewharton.rxbinding4.view.RxView;
import com.kanglai.push.BR; import com.kanglai.push.BR;
import com.kanglai.push.R; import com.kanglai.push.R;
import com.kanglai.push.constant.CacheConstant; import com.kanglai.push.constant.CacheConstant;
@ -46,6 +48,8 @@ import com.kanglai.push.util.HistoryMsgUtil;
import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.umeng.message.PushAgent; import com.umeng.message.PushAgent;
import java.util.concurrent.TimeUnit;
import ezy.ui.layout.LoadingLayout; import ezy.ui.layout.LoadingLayout;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
@ -63,6 +67,7 @@ public class MessageFragment extends BaseFragment<FragmentMessageBinding, Messag
public RecyclerViewTouchActionGuardManager mRecyclerViewTouchActionGuardManager; public RecyclerViewTouchActionGuardManager mRecyclerViewTouchActionGuardManager;
public RecyclerViewSwipeManager mRecyclerViewSwipeManager; public RecyclerViewSwipeManager mRecyclerViewSwipeManager;
public RecyclerView.Adapter mWrappedAdapter; public RecyclerView.Adapter mWrappedAdapter;
public MessageSwipeableRecyclerAdapter mAdapter; public MessageSwipeableRecyclerAdapter mAdapter;
public RefreshLayout mRefreshLayout; public RefreshLayout mRefreshLayout;
public LoadingLayout mLoadingLayout; public LoadingLayout mLoadingLayout;
@ -83,6 +88,7 @@ public class MessageFragment extends BaseFragment<FragmentMessageBinding, Messag
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
/** 接收友盟的消息 */
mSubscription = RxBus.getInstance().toObservableSticky(PushChatMessage.class) mSubscription = RxBus.getInstance().toObservableSticky(PushChatMessage.class)
.compose(RxUtil.schedulersTransformer()) .compose(RxUtil.schedulersTransformer())
.compose(RxUtil.exceptionTransformer()) .compose(RxUtil.exceptionTransformer())
@ -93,6 +99,8 @@ public class MessageFragment extends BaseFragment<FragmentMessageBinding, Messag
} }
}); });
RxSubscriptions.add(mSubscription); RxSubscriptions.add(mSubscription);
/** 聊天室的回传 */
instantLauncherResult = registerForActivityResult(new ActivityResultContract<LocalPushChatMsg, LocalPushChatMsg>() { instantLauncherResult = registerForActivityResult(new ActivityResultContract<LocalPushChatMsg, LocalPushChatMsg>() {
@Override @Override
public LocalPushChatMsg parseResult(int resultCode, @Nullable Intent intent) { public LocalPushChatMsg parseResult(int resultCode, @Nullable Intent intent) {

2
app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java

@ -143,6 +143,7 @@ public class InstantViewModel extends ToolbarViewModel<InstantActivity>{
}); });
}); });
/** 聊天记录初始化 */
public void initData(RefreshLayout refresh) { public void initData(RefreshLayout refresh) {
pushService.listFriendHistoryMessage( pushService.listFriendHistoryMessage(
MapUtils.newHashMap( MapUtils.newHashMap(
@ -176,6 +177,7 @@ public class InstantViewModel extends ToolbarViewModel<InstantActivity>{
}); });
} }
/** 加载更多历史记录 */
public void loadMore(RefreshLayout layout) { public void loadMore(RefreshLayout layout) {
pushService.listFriendHistoryMessage( pushService.listFriendHistoryMessage(
MapUtils.newHashMap( MapUtils.newHashMap(

4
app/src/main/java/com/kanglai/push/ui/vm/MessageViewModel.java

@ -56,7 +56,7 @@ public class MessageViewModel extends ToolbarViewModel<MessageFragment> {
super.onCreate(owner); super.onCreate(owner);
} }
/** 核心 - 刷新数据 */
public void refresh(RefreshLayout refresh) { public void refresh(RefreshLayout refresh) {
Map<String, LocalPushChatMsg> localHistoryMsg = HistoryMsgUtil.select(); Map<String, LocalPushChatMsg> localHistoryMsg = HistoryMsgUtil.select();
if (localHistoryMsg != null && !localHistoryMsg.isEmpty()) { if (localHistoryMsg != null && !localHistoryMsg.isEmpty()) {
@ -66,7 +66,7 @@ public class MessageViewModel extends ToolbarViewModel<MessageFragment> {
refresh.finishRefresh(); refresh.finishRefresh();
} }
/** 加载新的缓存消息记录 */
public void addLocalHistoryMsg(String userId, String content) { public void addLocalHistoryMsg(String userId, String content) {
pushService.getUserById(userId) pushService.getUserById(userId)
.compose(RxUtil.schedulersTransformer()) .compose(RxUtil.schedulersTransformer())

22
app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java

@ -14,17 +14,33 @@ import java.util.Objects;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
/**
* 聊天页 本地缓存 记录工具类
*
* 查询缓存的键名 userid + type
*
*
* @Author: liusixiang007
* @since: 2024/1/11
*/
@UtilityClass @UtilityClass
public class HistoryMsgUtil { public class HistoryMsgUtil {
private User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); private User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User());
/** 获取缓存的列表数据 */
public HashMap<String, LocalPushChatMsg> select() { public HashMap<String, LocalPushChatMsg> select() {
String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,"");
Type type = new TypeToken<HashMap<String, LocalPushChatMsg>>(){}.getType(); Type type = new TypeToken<HashMap<String, LocalPushChatMsg>>(){}.getType();
return new Gson().fromJson(localHistoryMsgJson, type); return new Gson().fromJson(localHistoryMsgJson, type);
} }
/**
* 更新缓存数据
*
* @param key 对应用户id
* @param value 需要更新的值
*/
public void put(String key,LocalPushChatMsg value) { public void put(String key,LocalPushChatMsg value) {
Objects.requireNonNull(key); Objects.requireNonNull(key);
String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,"");
@ -35,6 +51,11 @@ public class HistoryMsgUtil {
CacheDiskUtils.getInstance().put(user.getId().concat(user.getUserType()), newLocalHistoryMsgJson); CacheDiskUtils.getInstance().put(user.getId().concat(user.getUserType()), newLocalHistoryMsgJson);
} }
/**
* 更具id删除指定的缓存数据
*
* @param key
*/
public void del(String key){ public void del(String key){
Objects.requireNonNull(key); Objects.requireNonNull(key);
String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,"");
@ -45,6 +66,7 @@ public class HistoryMsgUtil {
CacheDiskUtils.getInstance().put(user.getId().concat(user.getUserType()), newLocalHistoryMsgJson); CacheDiskUtils.getInstance().put(user.getId().concat(user.getUserType()), newLocalHistoryMsgJson);
} }
/** 清空聊天记录 */
public void clean() { public void clean() {
CacheDiskUtils.getInstance().remove(user.getId().concat(user.getUserType())); CacheDiskUtils.getInstance().remove(user.getId().concat(user.getUserType()));
} }

18
library/umeng/src/main/java/com/dolphin/umeng/UmengClient.java

@ -6,17 +6,14 @@ import android.app.Notification;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.media.MediaPlayer; import android.hardware.camera2.CameraAccessException;
import android.net.Uri; import android.hardware.camera2.CameraManager;
import android.os.PowerManager;
import android.text.TextUtils;
import android.util.Patterns; import android.util.Patterns;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.blankj.utilcode.util.FlashlightUtils;
import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.StringUtils; import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.ThreadUtils; import com.blankj.utilcode.util.ThreadUtils;
@ -175,11 +172,18 @@ public final class UmengClient {
if (pushChatMessage.getPlayVibrate()) if (pushChatMessage.getPlayVibrate())
VibrateUtils.vibrate(800); VibrateUtils.vibrate(800);
if (pushChatMessage.getPlayLights()) { if (pushChatMessage.getPlayLights()) {
FlashlightUtils.setFlashlightStatus(true); CameraManager cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
String cameraId = cameraManager.getCameraIdList()[0];
cameraManager.setTorchMode(cameraId, true);
} catch (CameraAccessException e) {}
ThreadUtils.executeBySingleWithDelay(new Utils.Task<Void>(result -> {}) { ThreadUtils.executeBySingleWithDelay(new Utils.Task<Void>(result -> {}) {
@Override @Override
public Void doInBackground() { public Void doInBackground() {
FlashlightUtils.setFlashlightStatus(false); try {
String cameraId = cameraManager.getCameraIdList()[0];
cameraManager.setTorchMode(cameraId, false);
} catch (CameraAccessException e) {}
return null; return null;
} }

Loading…
Cancel
Save