diff options
Diffstat (limited to 'startop/apps')
22 files changed, 604 insertions, 0 deletions
diff --git a/startop/apps/test/Android.bp b/startop/apps/test/Android.bp new file mode 100644 index 000000000000..3adc05e2cab9 --- /dev/null +++ b/startop/apps/test/Android.bp @@ -0,0 +1,23 @@ +// +// Copyright (C) 2019 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. +// + +android_app { + name: "startop_test_app", + srcs: [ + "src/EmptyActivity.java", + "src/LayoutInflation.java", + ], +} diff --git a/startop/apps/test/AndroidManifest.xml b/startop/apps/test/AndroidManifest.xml new file mode 100644 index 000000000000..6b08118b73b7 --- /dev/null +++ b/startop/apps/test/AndroidManifest.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2019 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. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.startop.test"> + + <application + android:allowBackup="true" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:roundIcon="@mipmap/ic_launcher_round" + android:supportsRtl="true"> + <activity android:name=".EmptyActivity"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + + <activity android:name=".LayoutInflation" android:exported="true" /> + </application> + +</manifest> diff --git a/startop/apps/test/README.md b/startop/apps/test/README.md new file mode 100644 index 000000000000..53c184bdd1c8 --- /dev/null +++ b/startop/apps/test/README.md @@ -0,0 +1,26 @@ +This directory contains a simple Android app that is meant to help in doing +controlled startup performance experiments. + +This app is structured as a number of activities that each are useful for a +different aspect of startup testing. + +# Activities + +## EmptyActivity + +This is the simplest possible Android activity. Starting this exercises only the +system parts of startup without any app-specific behavior. + + adb shell am start -n com.android.startop.test/.EmptyActivity + +## LayoutInflation + +This activity inflates a reasonably complex layout to see the impact of layout +inflation. The layout is supported by the viewcompiler, so this can be used for +testing precompiled layout performance. + +The activity adds an `inflate#activity_main` slice to atrace around the time +spent in view inflation to make it easier to focus on the time spent in view +inflation. + + adb shell am start -n com.android.startop.test/.LayoutInflation diff --git a/startop/apps/test/res/drawable-v24/ic_launcher_foreground.xml b/startop/apps/test/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 000000000000..c7bd21dbd869 --- /dev/null +++ b/startop/apps/test/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt" + android:width="108dp" + android:height="108dp" + android:viewportHeight="108" + android:viewportWidth="108"> + <path + android:fillType="evenOdd" + android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" + android:strokeColor="#00000000" + android:strokeWidth="1"> + <aapt:attr name="android:fillColor"> + <gradient + android:endX="78.5885" + android:endY="90.9159" + android:startX="48.7653" + android:startY="61.0927" + android:type="linear"> + <item + android:color="#44000000" + android:offset="0.0" /> + <item + android:color="#00000000" + android:offset="1.0" /> + </gradient> + </aapt:attr> + </path> + <path + android:fillColor="#FFFFFF" + android:fillType="nonZero" + android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" + android:strokeColor="#00000000" + android:strokeWidth="1" /> +</vector> diff --git a/startop/apps/test/res/drawable/ic_launcher_background.xml b/startop/apps/test/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000000..d5fccc538c17 --- /dev/null +++ b/startop/apps/test/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="108dp" + android:height="108dp" + android:viewportHeight="108" + android:viewportWidth="108"> + <path + android:fillColor="#26A69A" + android:pathData="M0,0h108v108h-108z" /> + <path + android:fillColor="#00000000" + android:pathData="M9,0L9,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,0L19,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M29,0L29,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M39,0L39,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M49,0L49,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M59,0L59,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M69,0L69,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M79,0L79,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M89,0L89,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M99,0L99,108" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,9L108,9" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,19L108,19" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,29L108,29" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,39L108,39" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,49L108,49" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,59L108,59" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,69L108,69" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,79L108,79" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,89L108,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M0,99L108,99" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,29L89,29" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,39L89,39" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,49L89,49" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,59L89,59" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,69L89,69" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M19,79L89,79" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M29,19L29,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M39,19L39,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M49,19L49,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M59,19L59,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M69,19L69,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> + <path + android:fillColor="#00000000" + android:pathData="M79,19L79,89" + android:strokeColor="#33FFFFFF" + android:strokeWidth="0.8" /> +</vector> diff --git a/startop/apps/test/res/layout/activity_main.xml b/startop/apps/test/res/layout/activity_main.xml new file mode 100644 index 000000000000..16f5641f2325 --- /dev/null +++ b/startop/apps/test/res/layout/activity_main.xml @@ -0,0 +1,230 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".MainActivity" > + + <LinearLayout + android:layout_width="0dp" + android:layout_weight="0.5" + android:layout_height="match_parent" + android:orientation="vertical"> + + <CheckBox + android:id="@+id/checkBox5" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CheckBox" /> + + <EditText + android:id="@+id/myEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="EditText" /> + + <EditText + android:id="@+id/myEditText2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="EditText" /> + + <Button + android:id="@+id/myButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Button" /> + + <Button + android:id="@+id/myButton2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Button" /> + + <ProgressBar + android:id="@+id/progressBar" + style="?android:attr/progressBarStyle" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <CheckBox + android:id="@+id/checkBox2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CheckBox" /> + + <RadioButton + android:id="@+id/radioButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="RadioButton" /> + + <CheckedTextView + android:id="@+id/checkedTextView2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CheckedTextView" /> + + <TextView + android:id="@+id/textView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <ToggleButton + android:id="@+id/toggleButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + <Switch + android:id="@+id/switch1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Switch" /> + + <CheckBox + android:id="@+id/checkBox3" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CheckBox" /> + + <CheckBox + android:id="@+id/checkBox4" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CheckBox" /> + + <EditText + android:id="@+id/editText2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ems="10" + android:inputType="textPassword" /> + + <RadioButton + android:id="@+id/radioButton2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="RadioButton" /> + + <EditText + android:id="@+id/editText3" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:ems="10" + android:inputType="numberDecimal" /> + + <SearchView + android:layout_width="match_parent" + android:layout_height="match_parent" > + + </SearchView> + </LinearLayout> + + <LinearLayout + android:layout_width="0dp" + android:layout_weight="0.5" + android:layout_height="match_parent" + android:orientation="vertical"> + + <Button + android:id="@+id/myButton3" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Button" /> + + <Button + android:id="@+id/myButton4" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Button" /> + + <Button + android:id="@+id/button14" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Button" /> + + <EditText + android:id="@+id/myEditText3" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="EditText" /> + + <Button + android:id="@+id/button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Button" /> + + <EditText + android:id="@+id/myEditText4" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="EditText" /> + + <ToggleButton + android:id="@+id/toggleButton2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + <ToggleButton + android:id="@+id/toggleButton5" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + <ToggleButton + android:id="@+id/toggleButton4" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + <ToggleButton + android:id="@+id/toggleButton3" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + <ProgressBar + android:id="@+id/progressBar2" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <EditText + android:id="@+id/editText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ems="10" + android:inputType="date" /> + + <CheckedTextView + android:id="@+id/checkedTextView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CheckedTextView" /> + + <SeekBar + android:id="@+id/seekBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <ToggleButton + android:id="@+id/toggleButton6" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + <ToggleButton + android:id="@+id/toggleButton7" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="ToggleButton" /> + + </LinearLayout> +</LinearLayout> diff --git a/startop/apps/test/res/mipmap-anydpi-v26/ic_launcher.xml b/startop/apps/test/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000000..eca70cfe52ea --- /dev/null +++ b/startop/apps/test/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@drawable/ic_launcher_background" /> + <foreground android:drawable="@drawable/ic_launcher_foreground" /> +</adaptive-icon>
\ No newline at end of file diff --git a/startop/apps/test/res/mipmap-anydpi-v26/ic_launcher_round.xml b/startop/apps/test/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000000..eca70cfe52ea --- /dev/null +++ b/startop/apps/test/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@drawable/ic_launcher_background" /> + <foreground android:drawable="@drawable/ic_launcher_foreground" /> +</adaptive-icon>
\ No newline at end of file diff --git a/startop/apps/test/res/mipmap-hdpi/ic_launcher.png b/startop/apps/test/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000000..a2f5908281d0 --- /dev/null +++ b/startop/apps/test/res/mipmap-hdpi/ic_launcher.png diff --git a/startop/apps/test/res/mipmap-hdpi/ic_launcher_round.png b/startop/apps/test/res/mipmap-hdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000000..1b5239980811 --- /dev/null +++ b/startop/apps/test/res/mipmap-hdpi/ic_launcher_round.png diff --git a/startop/apps/test/res/mipmap-mdpi/ic_launcher.png b/startop/apps/test/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000000..ff10afd6e182 --- /dev/null +++ b/startop/apps/test/res/mipmap-mdpi/ic_launcher.png diff --git a/startop/apps/test/res/mipmap-mdpi/ic_launcher_round.png b/startop/apps/test/res/mipmap-mdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000000..115a4c768a20 --- /dev/null +++ b/startop/apps/test/res/mipmap-mdpi/ic_launcher_round.png diff --git a/startop/apps/test/res/mipmap-xhdpi/ic_launcher.png b/startop/apps/test/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000000..dcd3cd808335 --- /dev/null +++ b/startop/apps/test/res/mipmap-xhdpi/ic_launcher.png diff --git a/startop/apps/test/res/mipmap-xhdpi/ic_launcher_round.png b/startop/apps/test/res/mipmap-xhdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000000..459ca609d3ae --- /dev/null +++ b/startop/apps/test/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/startop/apps/test/res/mipmap-xxhdpi/ic_launcher.png b/startop/apps/test/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000000..8ca12fe024be --- /dev/null +++ b/startop/apps/test/res/mipmap-xxhdpi/ic_launcher.png diff --git a/startop/apps/test/res/mipmap-xxhdpi/ic_launcher_round.png b/startop/apps/test/res/mipmap-xxhdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000000..8e19b410a1b1 --- /dev/null +++ b/startop/apps/test/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/startop/apps/test/res/mipmap-xxxhdpi/ic_launcher.png b/startop/apps/test/res/mipmap-xxxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000000..b824ebdd48db --- /dev/null +++ b/startop/apps/test/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/startop/apps/test/res/mipmap-xxxhdpi/ic_launcher_round.png b/startop/apps/test/res/mipmap-xxxhdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000000..4c19a13c239c --- /dev/null +++ b/startop/apps/test/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/startop/apps/test/res/values/colors.xml b/startop/apps/test/res/values/colors.xml new file mode 100644 index 000000000000..3ab3e9cbce07 --- /dev/null +++ b/startop/apps/test/res/values/colors.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="colorPrimary">#3F51B5</color> + <color name="colorPrimaryDark">#303F9F</color> + <color name="colorAccent">#FF4081</color> +</resources> diff --git a/startop/apps/test/res/values/strings.xml b/startop/apps/test/res/values/strings.xml new file mode 100644 index 000000000000..18419b58fad0 --- /dev/null +++ b/startop/apps/test/res/values/strings.xml @@ -0,0 +1,3 @@ +<resources> + <string name="app_name">Startup Testing Swiss Army Knife</string> +</resources> diff --git a/startop/apps/test/src/EmptyActivity.java b/startop/apps/test/src/EmptyActivity.java new file mode 100644 index 000000000000..5202938686c0 --- /dev/null +++ b/startop/apps/test/src/EmptyActivity.java @@ -0,0 +1,26 @@ +// +// Copyright (C) 2019 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 com.android.startop.test; + +import android.app.Activity; + +/** + * The simplest possible Android activity, for testing startup with no + * app-specific behavior. + */ +public class EmptyActivity extends Activity { +} diff --git a/startop/apps/test/src/LayoutInflation.java b/startop/apps/test/src/LayoutInflation.java new file mode 100644 index 000000000000..daa4e4556f8e --- /dev/null +++ b/startop/apps/test/src/LayoutInflation.java @@ -0,0 +1,39 @@ +// +// Copyright (C) 2019 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 com.android.startop.test; + +import android.app.Activity; +import android.os.Bundle; +import android.os.Trace; +import android.view.LayoutInflater; +import android.view.View; + +/** + * This activity inflates a reasonably complex layout to see the impact of + * layout inflation. The layout is supported by the viewcompiler, so this can be + * used for testing precompiled layout performance. + */ +public class LayoutInflation extends Activity { + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + LayoutInflater inflater = LayoutInflater.from(this); + Trace.beginSection("inflate layout:activity_main"); + View view = inflater.inflate(R.layout.activity_main, /*root=*/null); + Trace.endSection(); + setContentView(view); + } +} |