@Override protected void onPause() { super.onPause(); // Remove ack-user change listener. EaseDingMessageHelper.get().setUserUpdateListener(msg, null); }
private void onMessageSuccess() { progressBar.setVisibility(View.GONE); statusView.setVisibility(View.GONE); // Show "1 Read" if this msg is a ding-type msg. if (EaseDingMessageHelper.get().isDingMessage(message) && ackedView != null) { ackedView.setVisibility(VISIBLE); List<String> userList = EaseDingMessageHelper.get().getAckUsers(message); int count = userList == null ? 0 : userList.size(); ackedView.setText(String.format(getContext().getString(R.string.group_ack_read_count), count)); } // Set ack-user list change listener. EaseDingMessageHelper.get().setUserUpdateListener(message, userUpdateListener); }
@Override protected void onResume() { super.onResume(); List<String> list = EaseDingMessageHelper.get().getAckUsers(msg); userList.clear(); if (list != null) { userList.addAll(list); } userAdapter.notifyDataSetChanged(); // Set ack-user change listener. EaseDingMessageHelper.get().setUserUpdateListener(msg, userUpdateListener); }
@Test public void testWeakReference() throws Exception { for (int i = 0; i < 10; i++) { helper.setUserUpdateListener(createDingMessage(String.valueOf(i), String.valueOf(-i)), new EaseDingMessageHelper.IAckUserUpdateListener() { @Override public void onUpdate(List<String> list) { } }); } Runtime.getRuntime().gc(); SystemClock.sleep(1000); WeakReference<EaseDingMessageHelper.IAckUserUpdateListener> listenerRefs = helper.getListenerMap().get("-1"); System.out.println("listenerRefs get() -> " + listenerRefs.get()); assertTrue(true); }