Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a538b4a2 authored by Conley Owens's avatar Conley Owens Committed by Android Code Review
Browse files

Merge "onDetachedFromWindow is called before onAttachedToWindow"

parents 4a4d96e7 505bd0d6
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@ public final class ViewRoot extends Handler implements ViewParent,
    private final Surface mSurface = new Surface();

    boolean mAdded;
    private boolean mAttached;
    boolean mAddedTouchMode;

    /*package*/ int mAddNesting;
@@ -762,7 +763,10 @@ public final class ViewRoot extends Handler implements ViewParent,
            attachInfo.mKeepScreenOn = false;
            viewVisibilityChanged = false;
            mLastConfiguration.setTo(host.getResources().getConfiguration());
            if (!mAttached) {
                host.dispatchAttachedToWindow(attachInfo, 0);
                mAttached = true;
            }
            //Log.i(TAG, "Screen on initialized: " + attachInfo.mKeepScreenOn);

        } else {
@@ -1743,8 +1747,9 @@ public final class ViewRoot extends Handler implements ViewParent,
    void dispatchDetachedFromWindow() {
        if (Config.LOGV) Log.v(TAG, "Detaching in " + this + " of " + mSurface);

        if (mView != null) {
        if (mView != null && mAttached) {
            mView.dispatchDetachedFromWindow();
            mAttached = false;
        }

        mView = null;
+6 −0
Original line number Diff line number Diff line
@@ -96,6 +96,12 @@

    <application android:theme="@style/Theme">
        <uses-library android:name="android.test.runner" />
        <activity android:name="android.view.ViewAttachTestActivity" android:label="View Attach Test">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
            </intent-filter>
        </activity>
        <activity android:name="StubTestBrowserActivity" android:label="Stubbed Test Browser">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
+12 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <android.view.ViewAttachView
    android:id="@+id/view_attach_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true"/>
</LinearLayout>
+54 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.view;

import android.content.pm.ActivityInfo;
import android.os.SystemClock;
import android.test.ActivityInstrumentationTestCase2;

public class ViewAttachTest extends
        ActivityInstrumentationTestCase2<ViewAttachTestActivity> {

    public ViewAttachTest() {
        super(ViewAttachTestActivity.class);
    }

    /**
     * Make sure that onAttachedToWindow and onDetachedToWindow is called in the
     * correct order The ViewAttachTestActivity contains a view that will throw
     * an RuntimeException if onDetachedToWindow and onAttachedToWindow is
     * called in the wrong order.
     *
     * 1. Initiate the activity 2. Perform a series of orientation changes to
     * the activity (this will force the View hierarchy to be rebuild,
     * generating onAttachedToWindow and onDetachedToWindow)
     *
     * Expected result: No RuntimeException is thrown from the TestView in
     * ViewFlipperTestActivity.
     *
     * @throws Throwable
     */
    public void testAttached() throws Throwable {
        final ViewAttachTestActivity activity = getActivity();
        for (int i = 0; i < 20; i++) {
            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            SystemClock.sleep(250);
            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            SystemClock.sleep(250);
        }
    }
}
+31 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.view;

import com.android.frameworks.coretests.R;

import android.app.Activity;
import android.os.Bundle;

public class ViewAttachTestActivity extends Activity {
    public static final String TAG = "OnAttachedTest";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.attach_view_test);
    }
}
Loading