@@ -147,7 +147,7 @@ private void processSticky(final Object bus) {
147
147
if (tagArgMap == null ) return ;
148
148
synchronized (mClassName_Tag_Arg4StickyMap ) {
149
149
for (Map .Entry <String , Object > tagArgEntry : tagArgMap .entrySet ()) {
150
- postInner (tagArgEntry .getKey (), tagArgEntry .getValue ());
150
+ postStickyInner (tagArgEntry .getKey (), tagArgEntry .getValue (), true );
151
151
}
152
152
}
153
153
}
@@ -176,15 +176,19 @@ private void postInner(final String tag, final Object arg, final boolean sticky)
176
176
return ;
177
177
}
178
178
for (BusInfo busInfo : busInfoList ) {
179
- if (busInfo .method == null ) {
180
- Method method = getMethodByBusInfo (busInfo );
181
- if (method == null ) {
182
- return ;
183
- }
184
- busInfo .method = method ;
179
+ invokeBus (tag , arg , busInfo , sticky );
180
+ }
181
+ }
182
+
183
+ private void invokeBus (String tag , Object arg , BusInfo busInfo , boolean sticky ) {
184
+ if (busInfo .method == null ) {
185
+ Method method = getMethodByBusInfo (busInfo );
186
+ if (method == null ) {
187
+ return ;
185
188
}
186
- invokeMethod ( tag , arg , busInfo , sticky ) ;
189
+ busInfo . method = method ;
187
190
}
191
+ invokeMethod (tag , arg , busInfo , sticky );
188
192
}
189
193
190
194
private Method getMethodByBusInfo (BusInfo busInfo ) {
@@ -287,15 +291,21 @@ private void realInvokeMethod(final String tag, Object arg, BusInfo busInfo, boo
287
291
}
288
292
289
293
private void postStickyInner (final String tag , final Object arg ) {
294
+ postStickyInner (tag , arg , false );
295
+ }
296
+
297
+ private void postStickyInner (final String tag , final Object arg , boolean isInvokeOnlySticky ) {
290
298
List <BusInfo > busInfoList = mTag_BusInfoListMap .get (tag );
291
299
if (busInfoList == null ) {
292
300
Log .e (TAG , "The bus of tag <" + tag + "> is not exists." );
293
301
return ;
294
302
}
295
303
for (BusInfo busInfo : busInfoList ) {
296
304
if (!busInfo .sticky ) { // not sticky bus will post directly.
297
- postInner (tag , arg );
298
- return ;
305
+ if (!isInvokeOnlySticky ) {
306
+ invokeBus (tag , arg , busInfo , false );
307
+ }
308
+ continue ;
299
309
}
300
310
synchronized (mClassName_Tag_Arg4StickyMap ) {
301
311
Map <String , Object > tagArgMap = mClassName_Tag_Arg4StickyMap .get (busInfo .className );
@@ -305,7 +315,7 @@ private void postStickyInner(final String tag, final Object arg) {
305
315
}
306
316
tagArgMap .put (tag , arg );
307
317
}
308
- postInner (tag , arg , true );
318
+ invokeBus (tag , arg , busInfo , true );
309
319
}
310
320
}
311
321
0 commit comments