Merge "Fix IllegalStateException in onBackPressed" into ub-contactsdialer-a-dev
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 9103a53..ec78b4d 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -142,6 +142,8 @@
     private MultiSelectContactsListFragment mAllFragment;
     private ContactTileListFragment mFavoritesFragment;
 
+    private boolean mIsVisible;
+
     /** ViewPager for swipe */
     private ViewPager mTabPager;
     private ViewPagerTabs mViewPagerTabs;
@@ -410,6 +412,14 @@
             configureFragments(!mIsRecreatedInstance);
         }
         super.onStart();
+
+        mIsVisible = true;
+    }
+
+    @Override
+    protected void onStop() {
+        mIsVisible = false;
+        super.onStop();
     }
 
     @Override
@@ -454,6 +464,13 @@
         super.onDestroy();
     }
 
+    /**
+     * Returns true when the Activity is currently visible (between onStart and onStop).
+     */
+    /* package */ boolean isVisible() {
+        return mIsVisible;
+    }
+
     private void configureFragments(boolean fromRequest) {
         if (fromRequest) {
             ContactListFilter filter = null;
@@ -1338,6 +1355,10 @@
 
     @Override
     public void onBackPressed() {
+        if (!isVisible()) {
+            return;
+        }
+
         if (mActionBarAdapter.isSelectionMode()) {
             mActionBarAdapter.setSelectionMode(false);
             mAllFragment.displayCheckBoxes(false);
@@ -1350,6 +1371,8 @@
 
     @Override
     protected void onSaveInstanceState(Bundle outState) {
+        mIsVisible = false;
+
         super.onSaveInstanceState(outState);
         mActionBarAdapter.onSaveInstanceState(outState);