Skip to content

Commit 88b24b8

Browse files
mrsimplemrsimple
authored andcommitted
synchronized register and unregister
1 parent 9e406dc commit 88b24b8

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

Simple_eventbus_demo/src/org/simple/eventbus/demo/fragment/MenuFragment.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@
2323
import android.view.View.OnClickListener;
2424
import android.view.ViewGroup;
2525
import android.widget.TextView;
26+
import android.widget.Toast;
2627

2728
import org.simple.eventbus.EventBus;
2829
import org.simple.eventbus.Subcriber;
2930
import org.simple.eventbus.ThreadMode;
3031
import org.simple.eventbus.demo.R;
3132
import org.simple.eventbus.demo.bean.User;
3233

34+
import java.util.ArrayList;
35+
import java.util.List;
3336
import java.util.Random;
3437

3538
/**
@@ -77,6 +80,13 @@ public void onClick(View v) {
7780
// 移除用户
7881
EventBus.getDefault().post(new User("User - 1"),
7982
"remove");
83+
84+
List<User> users = new ArrayList<User>();
85+
for (int i = 0; i < 5; i++) {
86+
users.add(new User("user - " + i));
87+
}
88+
89+
EventBus.getDefault().post(users, "list");
8090
}
8191
});
8292

@@ -109,6 +119,14 @@ private void updateClickUserName(User clickPerson) {
109119
mUserNameTv.setText(clickPerson.name);
110120
}
111121

122+
@Subcriber(tag = "list")
123+
private void subcribeList(List<User> users) {
124+
Toast.makeText(getActivity(), "list", Toast.LENGTH_SHORT).show();
125+
for (int i = 0; i < threads.length; i++) {
126+
Log.e(getTag(), "### user name = " + users.get(i));
127+
}
128+
}
129+
112130
/*
113131
* 模拟从异步线程发来的更新信息
114132
*/

src/org/simple/eventbus/EventBus.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,9 @@ public void register(Object subscriber) {
129129
return;
130130
}
131131

132-
mMethodHunter.findSubcribeMethods(subscriber);
132+
synchronized (this) {
133+
mMethodHunter.findSubcribeMethods(subscriber);
134+
}
133135
}
134136

135137
/**
@@ -139,7 +141,10 @@ public void unregister(Object subscriber) {
139141
if (subscriber == null) {
140142
return;
141143
}
142-
mMethodHunter.removeMethodsFromMap(subscriber);
144+
145+
synchronized (this) {
146+
mMethodHunter.removeMethodsFromMap(subscriber);
147+
}
143148

144149
Log.d(getDescriptor(), "### subscriber map size = " + mSubcriberMap.size());
145150
}

0 commit comments

Comments
 (0)