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

