Fix BackgroundManagerTest

onStart() might be called multiple times, should attach before
onStart or check if isAttached().

Bug: none
Test: inheritColorByNewActivity
Change-Id: Id42d2b53ffefcff6cca6067aca7330de3b97a6e3
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BackgroundManagerTest.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BackgroundManagerTest.java
index 7e7873a..3ccfbf7 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BackgroundManagerTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BackgroundManagerTest.java
@@ -379,7 +379,10 @@
             @Override
             public void onStart(TestActivity activity) {
                 BackgroundManager m = BackgroundManager.getInstance(activity);
-                m.attach(activity.getWindow());
+                if (!m.isAttached()) {
+                    // onStart will be called mutliple times, attach() can only be called once.
+                    m.attach(activity.getWindow());
+                }
                 m.setColor(Color.BLUE);
             }
         };
@@ -397,7 +400,8 @@
     public void assignColorImmediately() throws Throwable {
         TestActivity.Provider provider1 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 // if we set color before attach, it will be assigned immediately
                 m.setColor(Color.BLUE);
@@ -418,7 +422,8 @@
         final Bitmap bitmap = createBitmap(200, 100, Color.BLUE);
         TestActivity.Provider provider1 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 // if we set bitmap before attach, it will be assigned immediately
                 m.setBitmap(bitmap);
@@ -440,7 +445,8 @@
         final Bitmap bitmap = createBitmap(200, 100, Color.BLUE);
         TestActivity.Provider provider1 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 // if we set bitmap before attach, it will be assigned immediately
                 m.setBitmap(bitmap);
@@ -450,11 +456,11 @@
         };
         mRule = new TestActivity.TestActivityTestRule(provider1, generateProviderName("activity1"));
         final TestActivity activity1 = mRule.launchActivity();
-        activity1.finish();
 
         TestActivity.Provider provider2 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 m.attach(activity.getWindow());
                 assertIsBitmapDrawable(m, bitmap);
@@ -474,7 +480,8 @@
         final int color = Color.BLUE;
         TestActivity.Provider provider1 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 // if we set color before attach, it will be assigned immediately
                 m.setColor(color);
@@ -484,11 +491,11 @@
         };
         mRule = new TestActivity.TestActivityTestRule(provider1, generateProviderName("activity1"));
         final TestActivity activity1 = mRule.launchActivity();
-        activity1.finish();
 
         TestActivity.Provider provider2 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 m.attach(activity.getWindow());
                 assertIsColorDrawable(m, color);
@@ -525,7 +532,8 @@
 
         TestActivity.Provider provider2 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 m.attach(activity.getWindow());
                 assertIsBitmapDrawable(m, bitmap);
@@ -577,7 +585,8 @@
 
         TestActivity.Provider provider2 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 m.attach(activity.getWindow());
                 assertIsBitmapDrawable(m, bitmap);
@@ -625,7 +634,8 @@
 
         TestActivity.Provider provider2 = new TestActivity.Provider() {
             @Override
-            public void onStart(TestActivity activity) {
+            public void onCreate(TestActivity activity, Bundle savedInstanceState) {
+                super.onCreate(activity, savedInstanceState);
                 BackgroundManager m = BackgroundManager.getInstance(activity);
                 m.attach(activity.getWindow());
                 assertIsBitmapDrawable(m, bitmap);