@@ -147,7 +147,7 @@ private void processSticky(final Object bus) {
147147 if (tagArgMap == null ) return ;
148148 synchronized (mClassName_Tag_Arg4StickyMap ) {
149149 for (Map .Entry <String , Object > tagArgEntry : tagArgMap .entrySet ()) {
150- postInner (tagArgEntry .getKey (), tagArgEntry .getValue ());
150+ postStickyInner (tagArgEntry .getKey (), tagArgEntry .getValue (), true );
151151 }
152152 }
153153 }
@@ -176,15 +176,19 @@ private void postInner(final String tag, final Object arg, final boolean sticky)
176176 return ;
177177 }
178178 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 ;
185188 }
186- invokeMethod ( tag , arg , busInfo , sticky ) ;
189+ busInfo . method = method ;
187190 }
191+ invokeMethod (tag , arg , busInfo , sticky );
188192 }
189193
190194 private Method getMethodByBusInfo (BusInfo busInfo ) {
@@ -287,15 +291,21 @@ private void realInvokeMethod(final String tag, Object arg, BusInfo busInfo, boo
287291 }
288292
289293 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 ) {
290298 List <BusInfo > busInfoList = mTag_BusInfoListMap .get (tag );
291299 if (busInfoList == null ) {
292300 Log .e (TAG , "The bus of tag <" + tag + "> is not exists." );
293301 return ;
294302 }
295303 for (BusInfo busInfo : busInfoList ) {
296304 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 ;
299309 }
300310 synchronized (mClassName_Tag_Arg4StickyMap ) {
301311 Map <String , Object > tagArgMap = mClassName_Tag_Arg4StickyMap .get (busInfo .className );
@@ -305,7 +315,7 @@ private void postStickyInner(final String tag, final Object arg) {
305315 }
306316 tagArgMap .put (tag , arg );
307317 }
308- postInner (tag , arg , true );
318+ invokeBus (tag , arg , busInfo , true );
309319 }
310320 }
311321
0 commit comments