2121import java .io .FileWriter ;
2222import java .io .File ;
2323import java .io .IOException ;
24- import java .util .ArrayList ;
24+ import java .util .Collections ;
25+ import java .util .Iterator ;
2526
2627import java .util .zip .GZIPInputStream ;
2728
@@ -380,11 +381,11 @@ public interface NewIntentListener {
380381 void onNewIntent (Intent intent );
381382 }
382383
383- private ArrayList <NewIntentListener > newIntentListeners = null ;
384+ private List <NewIntentListener > newIntentListeners = null ;
384385
385386 public void registerNewIntentListener (NewIntentListener listener ) {
386387 if ( this .newIntentListeners == null )
387- this .newIntentListeners = new ArrayList <NewIntentListener >();
388+ this .newIntentListeners = Collections . synchronizedList ( new ArrayList <NewIntentListener >() );
388389 this .newIntentListeners .add (listener );
389390 }
390391
@@ -400,8 +401,12 @@ protected void onNewIntent(Intent intent) {
400401 return ;
401402 if ( this .mView != null )
402403 this .mView .onResume ();
403- for ( NewIntentListener listener : this .newIntentListeners )
404- listener .onNewIntent (intent );
404+ synchronized ( this .newIntentListeners ) {
405+ Iterator <NewIntentListener > iterator = this .newIntentListeners .iterator ();
406+ while ( iterator .hasNext () ) {
407+ (iterator .next ()).onNewIntent (intent );
408+ }
409+ }
405410 }
406411
407412 //----------------------------------------------------------------------------
@@ -412,11 +417,11 @@ public interface ActivityResultListener {
412417 void onActivityResult (int requestCode , int resultCode , Intent data );
413418 }
414419
415- private ArrayList <ActivityResultListener > activityResultListeners = null ;
420+ private List <ActivityResultListener > activityResultListeners = null ;
416421
417422 public void registerActivityResultListener (ActivityResultListener listener ) {
418423 if ( this .activityResultListeners == null )
419- this .activityResultListeners = new ArrayList <ActivityResultListener >();
424+ this .activityResultListeners = Collections . synchronizedList ( new ArrayList <ActivityResultListener >() );
420425 this .activityResultListeners .add (listener );
421426 }
422427
@@ -432,8 +437,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent intent)
432437 return ;
433438 if ( this .mView != null )
434439 this .mView .onResume ();
435- for ( ActivityResultListener listener : this .activityResultListeners )
436- listener .onActivityResult (requestCode , resultCode , intent );
440+ synchronized ( this .activityResultListeners ) {
441+ Iterator <ActivityResultListener > iterator = this .activityResultListeners .iterator ();
442+ while ( iterator .hasNext () )
443+ (iterator .next ()).onActivityResult (requestCode , resultCode , intent );
444+ }
437445 }
438446
439447 //----------------------------------------------------------------------------
0 commit comments