Steps:
1. Go into Activity A-> Activity B -> Activity A by sending goback keycode
2. Call getLastActivity in ActivityMonitor class 
Result: The current activity is still Activity B.
 
I think it's code defect. The relate code is following. If 
*mLastActivity*<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>
 isn't 
null, it can't get updated even if it has been changed. 
It really blocks UI automation because getCurrentActivity is a common and 
necessary scenario in test cases.
  
/**

 
*530*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#530>
 

         * Block until an Activity is created that matches this monitor, 

         * Block until an Activity is created that matches this monitor, 

 
*531*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#531>
 

         * returning the resulting activity or till the timeOut period expires.

         * returning the resulting activity or till the timeOut period expires.

 
*532*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#532>
 

         * If the timeOut expires before the activity is started, return null. 

         * If the timeOut expires before the activity is started, return null. 

 
*533*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#533>
 

         * 

         * 

 
*534*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#534>
 

         * @param timeOut Time to wait before the activity is created.

         * @param timeOut Time to wait before the activity is created.

 
*535*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#535>
 

         * 

         * 

 
*536*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#536>
 

         * @return Activity

         * @return Activity

 
*537*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#537>
 

         */

         */

 
*538*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#538>
 

         public final *Activity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.7_r1/android/app/Activity.java#Activity>
 waitForActivityWithTimeout(long timeOut) {

         public final *Activity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Activity.java#Activity>
 waitForActivityWithTimeout(long timeOut) {

 
*539*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#539>
 

             synchronized (this) {

             synchronized (this) {

 
*540*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#540>
 

                  if (*mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>
 == null) {

 
*541*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#541>
 

                 try {

                     try {

 
*542*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#542>
 

                     *wait* 
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Object.java#Object.wait%28long%29>(timeOut);

                         *wait* 
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Object.java#Object.wait%28long%29>(timeOut);

 
*543*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#543>
 

                 } catch (*InterruptedException* 
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/InterruptedException.java#InterruptedException>
 e) {

                     } catch (*InterruptedException* 
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/InterruptedException.java#InterruptedException>
 e) {

 
*544*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#544>
 

                 }

                     }

 
*545*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#545>
 

                  }

 
*546*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#546>
 

                 if (*mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.7_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>
 == null) {

                 if (*mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>
 == null) {

 
*547*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#547>
 

                     return null;

                     return null;

 
*548*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#548>
 

                 } else {

                 } else {

 
*549*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#549>
 

                     *Activity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.7_r1/android/app/Activity.java#Activity>
 res = *mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.7_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>;

                     *Activity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Activity.java#Activity>
 res = *mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>;

 
*550*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#550>
 

                     *mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.7_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>
 = null;

                     *mLastActivity* 
<http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java#Instrumentation.ActivityMonitor.0mLastActivity>
 = null;

 
*551*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#551>
 

                     return res;

                     return res;

 
*552*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#552>
 

                 }

                 }

 
*553*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#553>
 

             }

             }

 
*554*<http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/app/Instrumentation.java/?v=diff&id2=2.3.7_r1#554>
 

         }

         }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to