<กิจกรรม>

ไวยากรณ์:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:canDisplayOnRemoteDevices=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["colorMode", "density",
                                 "fontScale", "fontWeightAdjustment",
                                 "grammaticalGender", "keyboard",
                                 "keyboardHidden", "layoutDirection", "locale",
                                 "mcc", "mnc", "navigation", "orientation",
                                 "screenLayout", "screenSize",
                                 "smallestScreenSize", "touchscreen", "uiMode"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:enabledOnBackInvokedCallback=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" |
                                                         "readOrWrite" | "write"] 
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    ...
</activity>
อยู่ใน
<application>
อาจมีข้อมูลต่อไปนี้
<intent-filter>
<meta-data>
<layout>
description:
ประกาศกิจกรรม (คลาสย่อย Activity) ที่ใช้งานอินเทอร์เฟซผู้ใช้แบบรูปภาพของแอปพลิเคชัน กิจกรรมทั้งหมดต้องแสดงด้วยองค์ประกอบ <activity> ในไฟล์ Manifest ระบบจะไม่แสดงโฆษณาที่ไม่ได้ประกาศไว้ในส่วนนี้และจะไม่แสดงโฆษณาดังกล่าว
แอตทริบิวต์
android:allowEmbedded

บ่งบอกว่าสามารถเปิดใช้งานกิจกรรมเป็นกิจกรรมย่อยที่ฝังอยู่ในกิจกรรมอื่นได้ โดยเฉพาะอย่างยิ่งในกรณีที่กิจกรรมย่อยอยู่ในคอนเทนเนอร์ เช่น Display ที่กิจกรรมอื่นเป็นเจ้าของ ตัวอย่างเช่น กิจกรรมที่ใช้สำหรับการแจ้งเตือนที่กำหนดเองของ Wear จะประกาศข้อมูลนี้เพื่อให้ Wear แสดงกิจกรรมในสตรีมบริบท ซึ่งอยู่ในกระบวนการอื่น

ค่าเริ่มต้นของแอตทริบิวต์นี้คือ false

android:allowTaskReparenting
ระบุว่ากิจกรรมจะย้ายจากงานที่เริ่มต้นไปยังงานที่เชื่อมโยงกันเมื่อระบบแสดงงานนั้นขึ้นมาต่อหน้าหรือไม่ สถานะจะแสดงเป็น "true" หากย้ายได้ และ "false" หากยังคงอยู่กับงานที่เริ่มต้น

หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ค่าที่แอตทริบิวต์ allowTaskReparenting ที่เกี่ยวข้องขององค์ประกอบ <application> กำหนดไว้จะมีผลกับกิจกรรม ค่าเริ่มต้นคือ "false"

โดยปกติแล้ว เมื่อเริ่มกิจกรรม ระบบจะเชื่อมโยงกิจกรรมนั้นกับงานของกิจกรรมที่เริ่มต้น และกิจกรรมจะเชื่อมโยงกับงานตลอดอายุการใช้งาน คุณสามารถใช้แอตทริบิวต์นี้เพื่อบังคับให้ตั้งค่าระดับบนสุดใหม่เป็นงานที่เชื่อมโยงกันเมื่องานปัจจุบันไม่แสดงอีกต่อไป โดยปกติแล้ว คำสั่งนี้จะใช้เพื่อย้ายกิจกรรมของแอปพลิเคชันไปยังงานหลักที่เชื่อมโยงกับแอปพลิเคชันนั้น

เช่น หากข้อความอีเมลมีลิงก์ไปยังหน้าเว็บ การคลิกลิงก์จะแสดงกิจกรรมที่แสดงหน้าเว็บได้ กิจกรรมดังกล่าวจะกําหนดโดยแอปพลิเคชันเบราว์เซอร์ แต่เปิดขึ้นเป็นส่วนหนึ่งของงานอีเมล หากมีการกำหนดใหม่ให้อยู่ภายใต้งานเบราว์เซอร์ งานดังกล่าวจะแสดงเมื่อเบราว์เซอร์ปรากฏขึ้นที่ด้านหน้าครั้งถัดไป และจะไม่แสดงเมื่องานอีเมลปรากฏขึ้นอีกครั้ง

แอตทริบิวต์ taskAffinity จะกําหนดความเกี่ยวข้องของกิจกรรม ระบบจะกำหนดความเกี่ยวข้องของงานโดยอ่านความเกี่ยวข้องของกิจกรรมรูท ดังนั้น ตามคําจํากัดความแล้ว กิจกรรมรูทจะอยู่ในงานที่มีความเกี่ยวข้องเดียวกันเสมอ เนื่องจากกิจกรรมที่มีโหมดการเริ่ม "singleTask" หรือ "singleInstance" จะอยู่ที่รูทของงานได้เท่านั้น การแยกระดับใหม่จึงจำกัดไว้ที่โหมด "standard" และ "singleTop" (ดูแอตทริบิวต์ launchMode ด้วย)

android:alwaysRetainTaskState
ระบบจะดูแลรักษาสถานะของงานที่กิจกรรมอยู่เสมอหรือไม่ "true" หากเป็นเช่นนั้น และ "false" หากระบบสามารถรีเซ็ตงานเป็นสถานะเริ่มต้นในบางสถานการณ์ ค่าเริ่มต้นคือ "false" แอตทริบิวต์นี้จะมีความหมายสําหรับกิจกรรมรูทของงานเท่านั้น ระบบจะละเว้นสำหรับกิจกรรมอื่นๆ ทั้งหมด

โดยปกติแล้ว ระบบจะล้างงานโดยนำกิจกรรมทั้งหมดออกจากกองที่อยู่เหนือกิจกรรมรูทในบางสถานการณ์เมื่อผู้ใช้เลือกงานนั้นอีกครั้งจากหน้าจอหลัก โดยปกติแล้ว ระบบจะดำเนินการนี้หากผู้ใช้ไม่ได้เข้าชมงานเป็นระยะเวลาหนึ่ง เช่น 30 นาที

อย่างไรก็ตาม เมื่อแอตทริบิวต์นี้เป็น "true" ผู้ใช้จะกลับไปที่งานในสถานะล่าสุดเสมอ ไม่ว่าจะไปที่งานนั้นด้วยวิธีใดก็ตาม ซึ่งมีประโยชน์ในแอปพลิเคชันอย่างเว็บเบราว์เซอร์ที่มีสถานะจำนวนมาก เช่น แท็บที่เปิดอยู่หลายแท็บที่ผู้ใช้ไม่ต้องการสูญเสีย

android:autoRemoveFromRecents
กำหนดว่างานซึ่งเปิดโดยกิจกรรมที่มีแอตทริบิวต์นี้จะยังคงอยู่ในหน้าจอล่าสุดจนกว่ากิจกรรมสุดท้ายในงานจะเสร็จสมบูรณ์หรือไม่ หากเป็น true ระบบจะนำงานออกจากหน้าจอ "ล่าสุด" โดยอัตโนมัติ ซึ่งจะลบล้างการใช้ FLAG_ACTIVITY_RETAIN_IN_RECENTS ของผู้เรียก ต้องเป็นค่าบูลีน นั่นคือ "true" หรือ "false"
android:banner
ทรัพยากร Drawable ที่แสดงแบนเนอร์กราฟิกแบบขยายสำหรับรายการที่เกี่ยวข้อง ใช้กับแท็ก <activity> เพื่อแสดงแบนเนอร์เริ่มต้นสําหรับกิจกรรมที่เฉพาะเจาะจง หรือใช้กับแท็ก <application>เพื่อแสดงแบนเนอร์สําหรับกิจกรรมทั้งหมดของแอปพลิเคชัน

ระบบจะใช้แบนเนอร์เพื่อแสดงแอปในหน้าจอหลักของ Android TV เนื่องจากแบนเนอร์จะแสดงในหน้าจอหลักเท่านั้น แอปพลิเคชันที่มีกิจกรรมที่จัดการ Intent CATEGORY_LEANBACK_LAUNCHER จึงระบุแบนเนอร์ได้เท่านั้น

แอตทริบิวต์นี้ตั้งค่าเป็นการอ้างอิงไปยังทรัพยากรที่วาดได้ซึ่งมีรูปภาพ เช่น "@drawable/banner" ไม่มีแบนเนอร์เริ่มต้น

ดูข้อมูลเพิ่มเติมได้ที่ ระบุแบนเนอร์หน้าจอหลักในหัวข้อเริ่มต้นใช้งานแอปทีวี

android:canDisplayOnRemoteDevices

บ่งชี้ว่ากิจกรรมจะแสดงในอุปกรณ์ระยะไกลได้หรือไม่ ซึ่งอาจใช้ Android หรือไม่ก็ได้ ต้องเป็นค่าบูลีน "true" หรือ "false"

ค่าเริ่มต้นของแอตทริบิวต์นี้คือ "true"

android:clearTaskOnLaunch
ระบบจะนำกิจกรรมทั้งหมดออกจากงาน ยกเว้นกิจกรรมรูท เมื่อมีการเปิดงานอีกครั้งจากหน้าจอหลักหรือไม่ "true" หากระบบจะตัดงานให้เหลือเพียงกิจกรรมรูทเสมอ และ "false" หากไม่ใช่ ค่าเริ่มต้นคือ "false" แอตทริบิวต์นี้มีประโยชน์สําหรับกิจกรรมที่เริ่มต้นงานใหม่เท่านั้น ซึ่งเป็นกิจกรรมรูท ระบบจะไม่สนใจสำหรับกิจกรรมอื่นๆ ทั้งหมดในแท็บ

เมื่อค่าเป็น "true" ทุกครั้งที่ผู้ใช้เริ่มงาน ระบบจะนำผู้ใช้ไปยังกิจกรรมรูทของงานนั้น ไม่ว่าผู้ใช้จะทําอะไรในครั้งล่าสุดของงานนั้นก็ตาม และไม่ว่าคุณจะใช้ปุ่ม "ย้อนกลับ" หรือ "หน้าแรก" เพื่อออกจากงานก็ตาม เมื่อค่าเป็น "false" ระบบจะล้างกิจกรรมออกจากงานได้ในบางสถานการณ์ แต่ไม่ใช่เสมอไป ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ alwaysRetainTaskState

สมมติว่าผู้ใช้เปิดกิจกรรม P จากหน้าจอหลัก แล้วไปยังกิจกรรม Q ถัดไป ผู้ใช้แตะ "หน้าแรก" แล้วกลับไปที่กิจกรรม P โดยปกติแล้ว ผู้ใช้จะเห็นกิจกรรม ค เนื่องจากเป็นกิจกรรมที่ผู้ใช้ทำล่าสุดในภารกิจของ พ อย่างไรก็ตาม หาก P ตั้งค่า Flag นี้เป็น "true" ระบบจะนำกิจกรรมทั้งหมดที่อยู่ด้านบนออก (ในกรณีนี้คือ Q) เมื่อผู้ใช้เปิดกิจกรรม P จากหน้าจอหลัก ดังนั้น ผู้ใช้จะเห็นเฉพาะ P เมื่อกลับไปที่งาน

หากแอตทริบิวต์นี้และ allowTaskReparenting มีค่าเป็น "true" กิจกรรมที่เปลี่ยนผู้ปกครองได้จะย้ายไปยังงานที่มีความเกี่ยวข้อง จากนั้นระบบจะทิ้งกิจกรรมที่เหลือ

ระบบจะละเว้นแอตทริบิวต์นี้หากไม่ได้ตั้งค่า FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

android:colorMode

ระบุโหมดสีของกิจกรรม หากระบุ อาจเป็น hdr หรือ wideColorGamut

หากเป็น hdr ระบบจะขอให้กิจกรรมแสดงในแบบช่วงไดนามิกสูงหากอุปกรณ์รองรับ

หากเป็น wideColorGamut แสดงว่าขอให้กิจกรรมแสดงในโหมดขอบเขตสีที่กว้างในอุปกรณ์ที่เข้ากันได้ ในโหมดช่วงสีกว้าง หน้าต่างจะแสดงผลนอกช่วงสี SRGB เพื่อแสดงสีสันที่สดใสยิ่งขึ้น หากอุปกรณ์ไม่รองรับการแสดงผลแบบช่วงสีกว้าง แอตทริบิวต์นี้จะไม่มีผล ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรนเดอร์ในโหมดสีกว้างได้ที่ปรับปรุงกราฟิกด้วยเนื้อหา Wide Color

android:configChanges
แสดงการเปลี่ยนแปลงการกําหนดค่าที่กิจกรรมจัดการด้วยตนเอง เมื่อการเปลี่ยนแปลงการกําหนดค่าเกิดขึ้นระหว่างรันไทม์ กิจกรรมจะปิดและเริ่มทํางานอีกครั้งโดยค่าเริ่มต้น แต่การประกาศการกําหนดค่าด้วยแอตทริบิวต์นี้จะป้องกันไม่ให้กิจกรรมเริ่มทํางานอีกครั้ง แต่กิจกรรมจะยังคงทํางานอยู่และระบบจะเรียกใช้เมธอด onConfigurationChanged() ของกิจกรรม

หมายเหตุ: ใช้แอตทริบิวต์นี้เฉพาะในกรณีที่พิเศษเท่านั้นเพื่อปรับปรุงประสิทธิภาพและการตอบสนองของแอปพลิเคชัน โปรดดูข้อมูลเพิ่มเติมที่หัวข้อจัดการการเปลี่ยนแปลงการกําหนดค่า

สตริงต่อไปนี้คือค่าที่ถูกต้องสำหรับแอตทริบิวต์นี้ ค่าหลายค่าจะแยกกันด้วย | เช่น "locale|navigation|orientation"

ค่า คำอธิบาย
"colorMode"

ความสามารถในการแสดงโหมดสีของหน้าจอ (ช่วงสีหรือช่วงไดนามิก) มีการเปลี่ยนแปลง

หมายเหตุ: โหมดสีที่กิจกรรมขอด้วยแอตทริบิวต์ colorMode หรือที่รันไทม์จะแตกต่างจากความสามารถสำหรับโหมดสีต่างๆ กิจกรรมที่เปลี่ยนโหมดสีที่ใช้จะไม่ทำให้เกิดการเปลี่ยนแปลงการกำหนดค่า เนื่องจากความสามารถของสีในการแสดงผลไม่เปลี่ยนแปลง

"density"

การเปลี่ยนแปลงความหนาแน่นของการแสดงผล เช่น เมื่อผู้ใช้ระบุขนาดการแสดงผลที่ต่างกันหรือมีการแสดงผลอื่นที่ใช้งานอยู่

เพิ่มใน API ระดับ 24

"fontScale" การเปลี่ยนแปลงตัวคูณการปรับขนาดแบบอักษร เช่น เมื่อผู้ใช้เลือกขนาดแบบอักษรใหม่สำหรับทั้งระบบ
"fontWeightAdjustment" ปริมาณการเพิ่มขึ้นของน้ำหนักตัวอักษรมีการเปลี่ยนแปลง
"grammaticalGender" เพศทางไวยากรณ์ของภาษามีการเปลี่ยนแปลง โปรดดู GrammaticalInflectionManager

เพิ่มใน API ระดับ 34

"keyboard" การเปลี่ยนแปลงประเภทแป้นพิมพ์ เช่น เมื่อผู้ใช้เสียบแป้นพิมพ์ภายนอก
"keyboardHidden" การเปลี่ยนแปลงการช่วยเหลือพิเศษของแป้นพิมพ์ เช่น เมื่อผู้ใช้แสดงแป้นพิมพ์ฮาร์ดแวร์
"layoutDirection"

การเปลี่ยนแปลงทิศทางของเลย์เอาต์ เช่น จากซ้ายไปขวา (LTR) เป็นขวาไปซ้าย (RTL)

เพิ่มใน API ระดับ 17

"locale" การเปลี่ยนแปลงภาษา เช่น เมื่อผู้ใช้เลือกภาษาใหม่ที่จะแสดงข้อความ
"mcc" การเปลี่ยนแปลงรหัสประเทศ (MCC) ของอุปกรณ์เคลื่อนที่ IMSI เมื่อตรวจพบซิมที่อัปเดต MCC
"mnc" การเปลี่ยนแปลงรหัสเครือข่ายมือถือ IMSI (MNC) เมื่อตรวจพบ SIM ที่อัปเดต MNC
"navigation" TA เปลี่ยนเป็นประเภทการนําทาง (แทร็กบอลหรือ D-pad) ซึ่งปกติแล้วจะไม่เกิดขึ้น
"orientation"

การเปลี่ยนแปลงการวางแนวหน้าจอ เช่น เมื่อผู้ใช้หมุนอุปกรณ์

หมายเหตุ: หากแอปพลิเคชันกำหนดเป้าหมายเป็น Android 3.2 (API ระดับ 13) ขึ้นไป ให้ประกาศการกำหนดค่า "screenLayout" และ "screenSize" ด้วย เนื่องจากเลย์เอาต์หน้าจอและขนาดหน้าจออาจเปลี่ยนแปลงเมื่ออุปกรณ์สลับระหว่างการวางแนวแนวตั้งและแนวนอน

"screenLayout" การเปลี่ยนแปลงเลย์เอาต์หน้าจอ เช่น เมื่อจอแสดงผลอื่นทำงานอยู่
"screenSize"

การเปลี่ยนแปลงขนาดหน้าจอที่ใช้ได้ในปัจจุบัน

ค่านี้แสดงถึงการเปลี่ยนแปลงขนาดที่ใช้ได้ในปัจจุบันโดยสัมพันธ์กับสัดส่วนภาพปัจจุบัน ดังนั้นค่านี้จะเปลี่ยนแปลงเมื่อผู้ใช้สลับระหว่างแนวนอนกับแนวตั้ง

เพิ่มใน API ระดับ 13

"smallestScreenSize"

การเปลี่ยนแปลงขนาดหน้าจอจริง

ค่านี้แสดงถึงการเปลี่ยนแปลงขนาดโดยไม่คำนึงถึงการวางแนว ดังนั้นค่านี้จะเปลี่ยนแปลงก็ต่อเมื่อขนาดหน้าจอจริงเปลี่ยนแปลง เช่น เปลี่ยนไปใช้จอแสดงผลภายนอก การเปลี่ยนแปลงการกำหนดค่านี้สอดคล้องกับการเปลี่ยนแปลงในการกำหนดค่า smallestWidth

เพิ่มใน API ระดับ 13

"touchscreen" การเปลี่ยนแปลงหน้าจอสัมผัส ซึ่งปกติแล้วจะไม่เกิดขึ้น
"uiMode" การเปลี่ยนแปลงโหมดอินเทอร์เฟซผู้ใช้ เช่น เมื่อผู้ใช้วางอุปกรณ์ในแท่นชาร์จบนโต๊ะหรือในรถยนต์ หรือโหมดกลางคืนมีการเปลี่ยนแปลง ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมด UI ต่างๆ ได้ที่ UiModeManager

เพิ่มใน API ระดับ 8

การเปลี่ยนแปลงการกําหนดค่าทั้งหมดเหล่านี้อาจส่งผลต่อค่าทรัพยากรที่แอปพลิเคชันเห็น ดังนั้น เมื่อเรียกใช้ onConfigurationChanged() มักจะจำเป็นต้องดึงข้อมูลทรัพยากรทั้งหมดอีกครั้ง ซึ่งรวมถึงเลย์เอาต์ของมุมมองและไฟล์ DRAWABLE เพื่อจัดการการเปลี่ยนแปลงอย่างถูกต้อง

หมายเหตุ: หากต้องการจัดการการเปลี่ยนแปลงการกำหนดค่าที่เกี่ยวข้องกับหลายหน้าต่าง ให้ใช้ทั้ง "screenLayout" และ "smallestScreenSize" ฟีเจอร์หลายหน้าต่างใช้ได้ใน Android 7.0 (API ระดับ 24) ขึ้นไป

android:directBootAware

กิจกรรมทราบถึงการบูตโดยตรงหรือไม่ กล่าวคือ กิจกรรมจะทำงานได้ก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์หรือไม่

หมายเหตุ: ระหว่างการบูตโดยตรง กิจกรรมในแอปพลิเคชันจะเข้าถึงได้เฉพาะข้อมูลที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลที่อุปกรณ์ปกป้องเท่านั้น

ค่าเริ่มต้นคือ "false"

android:documentLaunchMode
ระบุวิธีเพิ่มอินสแตนซ์ใหม่ของกิจกรรมลงในงานทุกครั้งที่เปิดใช้งาน แอตทริบิวต์นี้อนุญาตให้ผู้ใช้มีเอกสารหลายรายการจากแอปพลิเคชันเดียวกันปรากฏในหน้าจอล่าสุด

แอตทริบิวต์นี้มี 4 ค่า ซึ่งจะทำให้เกิดผลดังต่อไปนี้เมื่อผู้ใช้เปิดเอกสารด้วยแอปพลิเคชัน

ค่า คำอธิบาย
"intoExisting" ระบบจะค้นหางานที่ ComponentName และ URI ของข้อมูลของ Intent พื้นฐานตรงกับของ Intent การเริ่ม หากพบงานดังกล่าว ระบบจะล้างงานและเริ่มใหม่ โดยที่กิจกรรมรูทจะได้รับการเรียกใช้ onNewIntent(android.content.Intent) หากไม่พบงานดังกล่าว ระบบจะสร้างงานใหม่
"always" กิจกรรมจะสร้างงานใหม่สำหรับเอกสาร แม้ว่าเอกสารจะเปิดอยู่แล้วก็ตาม ซึ่งจะเหมือนกับการตั้งค่าทั้ง Flag FLAG_ACTIVITY_NEW_DOCUMENT และ FLAG_ACTIVITY_MULTIPLE_TASK
"none" กิจกรรมจะไม่สร้างงานใหม่สำหรับกิจกรรม ค่านี้เป็นค่าเริ่มต้น ซึ่งจะสร้างงานใหม่เฉพาะเมื่อมีการตั้งค่า FLAG_ACTIVITY_NEW_TASK เท่านั้น หน้าจอล่าสุดจะจัดการกิจกรรมตามค่าเริ่มต้น โดยจะแสดงงานเดียวสําหรับแอป ซึ่งจะกลับมาทํางานต่อจากกิจกรรมที่ผู้ใช้เรียกใช้ครั้งล่าสุด
"never" ระบบจะไม่เปิดกิจกรรมในเอกสารใหม่ แม้ว่า Intent จะมี FLAG_ACTIVITY_NEW_DOCUMENT ก็ตาม การตั้งค่านี้จะลบล้างลักษณะการทํางานของ Flag FLAG_ACTIVITY_NEW_DOCUMENT และ FLAG_ACTIVITY_MULTIPLE_TASK หากมีการตั้งค่า Flag เหล่านี้ในกิจกรรม และหน้าจอ "ล่าสุด" จะแสดงงานเดียวสําหรับแอป ซึ่งจะกลับมาทํางานต่อจากกิจกรรมที่ผู้ใช้เรียกใช้ครั้งล่าสุด

หมายเหตุ: สําหรับค่าที่ไม่ใช่ "none" และ "never" ระบบจะกําหนดกิจกรรมด้วย launchMode="standard" หากไม่ได้ระบุแอตทริบิวต์นี้ ระบบจะใช้ documentLaunchMode="none"

android:enabled
ระบบสามารถสร้างอินสแตนซ์ของกิจกรรมได้หรือไม่ โดยค่าเริ่มต้นจะเป็น "true" หากเปลี่ยนได้ และ "false" หากเปลี่ยนไม่ได้ ค่าเริ่มต้นคือ "true"

องค์ประกอบ <application> มีแอตทริบิวต์ enabled เป็นของตัวเอง ซึ่งมีผลกับคอมโพเนนต์แอปพลิเคชันทั้งหมด รวมถึงกิจกรรม แอตทริบิวต์ <application> และ <activity> ต้องมีค่าเป็น "true" ทั้งคู่ เนื่องจากค่าเริ่มต้นของแอตทริบิวต์ทั้ง 2 รายการเป็น "true" เพื่อให้ระบบสร้างอินสแตนซ์ของกิจกรรมได้ หากค่าของตัวแปรใดตัวแปรหนึ่งเป็น "false" ระบบจะสร้างอินสแตนซ์ไม่ได้

android:enableOnBackInvokedCallback
Flag นี้ช่วยให้คุณเลือกไม่ใช้ภาพเคลื่อนไหวของระบบแบบคาดเดาที่ระดับกิจกรรมได้

การตั้งค่า android:enableOnBackInvokedCallback=false จะปิดภาพเคลื่อนไหวย้อนกลับแบบคาดการณ์ที่ระดับกิจกรรมหรือระดับแอป ทั้งนี้ขึ้นอยู่กับตำแหน่งที่คุณตั้งค่าแท็ก และสั่งให้ระบบไม่สนใจการเรียก API ของแพลตฟอร์ม OnBackInvokedCallback

android:excludeFromRecents

ระบุว่าจะยกเว้นงานซึ่งเริ่มต้นจากกิจกรรมนี้จาก หน้าจอล่าสุดหรือไม่ กล่าวคือ เมื่อกิจกรรมนี้เป็นกิจกรรมรูทของงานใหม่ แอตทริบิวต์นี้จะกำหนดว่างานจะปรากฏในรายการแอปล่าสุดหรือไม่ จะเป็น"true"หากงานยกเว้นจากรายการ และ"false"หากรวม ค่าเริ่มต้นคือ "false"

android:exported

คอมโพเนนต์ของแอปพลิเคชันอื่นๆ สามารถเปิดใช้งานกิจกรรมได้หรือไม่

  • หากเป็น "true" แอปใดก็ตามจะเข้าถึงกิจกรรมได้ และสามารถเปิดใช้งานด้วยชื่อคลาสที่ตรงกันทุกประการ
  • หากเป็น "false" กิจกรรมจะเปิดได้เฉพาะโดยคอมโพเนนต์ของแอปพลิเคชันเดียวกัน แอปพลิเคชันที่มีรหัสผู้ใช้เดียวกัน หรือคอมโพเนนต์ของระบบที่มีสิทธิ์ ค่านี้เป็นค่าเริ่มต้นเมื่อไม่มีตัวกรอง Intent

หากกิจกรรมในแอปมีตัวกรอง Intent ให้ตั้งค่าองค์ประกอบนี้เป็น "true" เพื่อให้แอปอื่นๆ เริ่มกิจกรรมได้ เช่น หากกิจกรรมเป็นกิจกรรมหลักของแอปและมี category android.intent.category.LAUNCHER

หากตั้งค่าองค์ประกอบนี้เป็น "false" และแอปพยายามเริ่มกิจกรรม ระบบจะแสดงข้อผิดพลาด ActivityNotFoundException

แอตทริบิวต์นี้ไม่ใช่วิธีเดียวในการจํากัดการแสดงกิจกรรมในแอปพลิเคชันอื่นๆ นอกจากนี้ ระบบยังใช้สิทธิ์เพื่อจำกัดเอนทิตีภายนอกที่เรียกใช้กิจกรรมได้ ดูแอตทริบิวต์ permission

android:finishOnTaskLaunch
การปิดอินสแตนซ์ที่มีอยู่ของกิจกรรม ยกเว้นกิจกรรมรูท เมื่อผู้ใช้เปิดใช้งานงานอีกครั้งโดยเลือกงานบนหน้าจอหลัก จะเป็น "true" หากปิดอยู่ และ "false" หากไม่ได้ปิด ค่าเริ่มต้นคือ "false"

หากแอตทริบิวต์นี้และ allowTaskReparenting มีค่าเป็น "true" ทั้งคู่ แอตทริบิวต์นี้จะมีความสำคัญเหนือกว่า ระบบจะไม่สนใจความเกี่ยวข้องของกิจกรรม ระบบจะไม่จัดทํารายงานกิจกรรมใหม่ แต่ระบบจะทำลายกิจกรรมนั้น

ระบบจะละเว้นแอตทริบิวต์นี้หากไม่ได้ตั้งค่า FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

android:hardwareAccelerated
เปิดใช้การแสดงผลที่มีการเร่งด้วยฮาร์ดแวร์สําหรับกิจกรรมนี้หรือไม่ "true" หากเปิดใช้ และ "false" หากไม่ได้เปิดใช้ ค่าเริ่มต้นคือ "false"

ใน Android 3.0 ขึ้นไป โปรแกรมแสดงผล OpenGL ที่เร่งด้วยฮาร์ดแวร์จะพร้อมใช้งานสำหรับแอปพลิเคชันเพื่อปรับปรุงประสิทธิภาพของการดำเนินการกราฟิก 2 มิติทั่วไปหลายรายการ เมื่อเปิดใช้โปรแกรมแสดงผลที่เร่งด้วยฮาร์ดแวร์ ระบบจะเร่งการดำเนินการส่วนใหญ่ใน Canvas, Paint, Xfermode, ColorFilter, Shader และ Camera

ซึ่งส่งผลให้ภาพเคลื่อนไหวราบรื่นขึ้น การเลื่อนราบรื่นขึ้น และการตอบสนองโดยรวมดีขึ้น แม้แต่สำหรับแอปพลิเคชันที่ไม่ได้ใช้ไลบรารี OpenGL ของเฟรมเวิร์กอย่างชัดเจน แอปจะใช้ RAM มากขึ้นเนื่องจากต้องใช้ทรัพยากรมากขึ้นเพื่อเปิดใช้การเร่งด้วยฮาร์ดแวร์

การดำเนินการ OpenGL 2D บางรายการอาจไม่ได้รับการเร่ง หากคุณเปิดใช้โปรแกรมแสดงผลที่เร่งด้วยฮาร์ดแวร์ ให้ทดสอบว่าแอปพลิเคชันใช้โปรแกรมแสดงผลดังกล่าวได้โดยไม่มีข้อผิดพลาดหรือไม่

android:icon

ไอคอนที่แสดงถึงกิจกรรม ไอคอนจะแสดงต่อผู้ใช้เมื่อจำเป็นต้องแสดงกิจกรรมบนหน้าจอ เช่น ไอคอนสำหรับกิจกรรมที่เริ่มงานจะแสดงในหน้าต่าง Launcher ไอคอนมักจะมาพร้อมกับป้ายกำกับ ดูข้อมูลเกี่ยวกับป้ายกำกับได้ที่แอตทริบิวต์ android:label

แอตทริบิวต์นี้ตั้งค่าเป็นการอ้างอิงไปยังทรัพยากรที่วาดได้ซึ่งมีคำจำกัดความของรูปภาพ หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ไอคอนที่ระบุสำหรับทั้งแอปพลิเคชันแทน ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ icon ขององค์ประกอบ <application>

ไอคอนของกิจกรรมไม่ว่าจะตั้งค่าที่นี่หรือโดยองค์ประกอบ <application> ก็ยังเป็นไอคอนเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของกิจกรรมด้วย ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ icon ขององค์ประกอบ <intent-filter>

android:immersive
ตั้งค่าโหมดสมจริงสําหรับกิจกรรมปัจจุบัน หากเป็น "true" สมาชิก ActivityInfo.flags จะมีการตั้งค่าบิต FLAG_IMMERSIVE เสมอ แม้ว่าโหมดสมจริงจะเปลี่ยนแปลงขณะรันไทม์โดยใช้เมธอด setImmersive() ก็ตาม
android:label

ป้ายกำกับที่ผู้ใช้อ่านได้สำหรับกิจกรรม ป้ายกำกับจะแสดงบนหน้าจอเมื่อแสดงกิจกรรมต่อผู้ใช้ โดยมักจะแสดงพร้อมกับไอคอนกิจกรรม หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะใช้ป้ายกำกับที่ตั้งค่าไว้สำหรับทั้งแอปพลิเคชันแทน ดูแอตทริบิวต์ label ขององค์ประกอบ <application>

ป้ายกำกับของกิจกรรม ไม่ว่าจะเป็นการตั้งค่าที่นี่หรือโดยองค์ประกอบ <application> จะเป็นป้ายกำกับเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของกิจกรรมด้วย ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ label ขององค์ประกอบ <intent-filter>

ระบบจะตั้งค่าป้ายกำกับเป็นข้อมูลอ้างอิงสำหรับทรัพยากรสตริงเพื่อให้แปลได้เช่นเดียวกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ อย่างไรก็ตาม คุณตั้งค่าเป็นสตริงดิบได้เพื่อความสะดวกขณะพัฒนาแอปพลิเคชัน

android:launchMode

วิธีการเปิดใช้งานกิจกรรม โหมดมี 5 โหมด ซึ่งทำงานร่วมกับ Flag ของกิจกรรม (FLAG_ACTIVITY_* constant) ในออบเจ็กต์ Intent เพื่อกำหนดสิ่งที่จะเกิดขึ้นเมื่อมีการเรียกใช้กิจกรรมเพื่อจัดการ Intent

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

โหมดเริ่มต้นคือ "standard"

ดังที่แสดงในตารางต่อไปนี้ โหมดต่างๆ จะแบ่งออกเป็น 2 กลุ่มหลัก โดยมีกิจกรรม "standard" และ "singleTop" อยู่ด้านหนึ่ง และกิจกรรม "singleTask", "singleInstance" และ "singleInstancePerTask" อยู่อีกด้านหนึ่ง กิจกรรมที่มีโหมดการเริ่ม "standard" หรือ "singleTop" จะสร้างอินสแตนซ์ได้หลายครั้ง

อินสแตนซ์อาจเป็นของงานใดก็ได้ และอยู่ตรงไหนก็ได้ในกิจกรรมของงาน โดยปกติแล้ว ระบบจะเปิดใช้งานออบเจ็กต์เหล่านี้ในงานที่เรียกใช้ startActivity() เว้นแต่ว่าออบเจ็กต์ Intent จะมีคำสั่ง FLAG_ACTIVITY_NEW_TASK ในกรณีนี้ระบบจะเลือกงานอื่น ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ taskAffinity

ในทางตรงกันข้าม กิจกรรม "singleTask", "singleInstance" และ "singleInstancePerTask" มีลักษณะการทํางานที่แตกต่างกัน "singleInstancePerTask" จะอยู่ที่รูทของงานกิจกรรมเสมอ นอกจากนี้ อุปกรณ์จะเก็บอินสแตนซ์ของกิจกรรม "singleInstance" ได้เพียงรายการเดียวในแต่ละครั้ง ขณะที่กิจกรรม "singleInstancePerTask สามารถสร้างอินสแตนซ์ได้หลายครั้งในภารกิจต่างๆ เมื่อตั้งค่า FLAG_ACTIVITY_MULTIPLE_TASK หรือ FLAG_ACTIVITY_NEW_DOCUMENT

กิจกรรมที่มีโหมดการเริ่ม"singleTask"จะรวมลักษณะการทํางานของ"singleInstance"และ"singleInstancePerTask"เข้าด้วยกัน กล่าวคือ กิจกรรมสามารถสร้างอินสแตนซ์ได้หลายครั้งและอยู่ที่ไหนก็ได้ในภารกิจของtaskAffinityเดียวกัน แต่อุปกรณ์จะเก็บงานได้เพียงงานเดียวสําหรับค้นหากิจกรรม "singleTask" ที่รูทของงานกิจกรรม

โหมด "standard" และ "singleTop" แตกต่างกันตรงที่ว่าทุกครั้งที่มี Intent ใหม่สําหรับกิจกรรม "standard" ระบบจะสร้างอินสแตนซ์ใหม่ของคลาสเพื่อตอบสนองต่อ Intent นั้น แต่ละอินสแตนซ์จะจัดการ Intent รายการเดียว ในทํานองเดียวกัน คุณยังสร้างอินสแตนซ์ใหม่ของกิจกรรม "singleTop" เพื่อจัดการ Intent ใหม่ได้ด้วย

อย่างไรก็ตาม หากงานเป้าหมายมีอินสแตนซ์ของกิจกรรมที่อยู่บนกองซ้อนอยู่แล้ว อินสแตนซ์นั้นจะรับความตั้งใจใหม่ในonNewIntent()การเรียก ระบบจะไม่สร้างอินสแตนซ์ใหม่ มิเช่นนั้น หากอินสแตนซ์ที่มีอยู่ของกิจกรรม "singleTop" อยู่ในงานเป้าหมายแต่ไม่ได้อยู่ด้านบนของกอง หรือหากอยู่ด้านบนของกองแต่ไม่ได้อยู่ในงานเป้าหมาย ระบบจะสร้างอินสแตนซ์ใหม่และดันลงในกอง

ในทํานองเดียวกัน หากผู้ใช้ไปยังกิจกรรมในกองซ้อนปัจจุบัน ลักษณะการทํางานจะขึ้นอยู่กับโหมดการเริ่มของกิจกรรมหลัก หากกิจกรรมหลักมีโหมดการเปิด singleTop (หรือ Intent up มี FLAG_ACTIVITY_CLEAR_TOP) ระบบจะนำกิจกรรมหลักไปไว้ที่ด้านบนของกอง และเก็บสถานะของกิจกรรมไว้

วิธีการ onNewIntent() ของกิจกรรมหลักจะรับ Intent การนำทาง หากกิจกรรมหลักมีโหมดเปิด standard และ Intent up ไม่มี FLAG_ACTIVITY_CLEAR_TOP กิจกรรมปัจจุบันและกิจกรรมหลักจะออกจากกองซ้อน และระบบจะสร้างอินสแตนซ์ใหม่ของกิจกรรมหลักเพื่อรับ Intent การนำทาง

โหมด "singleInstance" ยังแตกต่างจาก "singleTask" และ "singleInstancePerTask" ในอีก 1 ด้านหนึ่งด้วย นั่นคือ กิจกรรมที่มีโหมดเปิด "singleTask" หรือ "singleInstancePerTask" จะทําให้กิจกรรมอื่นๆ ซึ่งต้องเป็นกิจกรรม "standard" และ "singleTop" เป็นส่วนหนึ่งของงานได้

ในทางกลับกัน กิจกรรม "singleInstance" จะไม่อนุญาตให้มีกิจกรรมอื่นเป็นส่วนหนึ่งของงาน โดยต้องเป็นกิจกรรมเดียวในงาน หากเริ่มกิจกรรมอื่น ระบบจะกำหนดกิจกรรมนั้นให้กับงานอื่น เหมือนกับว่า FLAG_ACTIVITY_NEW_TASK อยู่ใน Intent

กรณีการใช้งาน โหมดเปิดใช้งาน มีอินสแตนซ์หลายรายการไหม ความคิดเห็น
การเปิดตัวแบบปกติสําหรับกิจกรรมส่วนใหญ่ "standard" ใช่ ค่าเริ่มต้น ระบบจะสร้างอินสแตนซ์ใหม่ของกิจกรรมในภารกิจเป้าหมายและกำหนดเส้นทางความตั้งใจไปยังภารกิจนั้นเสมอ
"singleTop" แบบมีเงื่อนไข หากอินสแตนซ์ของกิจกรรมมีอยู่แล้วที่ด้านบนของงานเป้าหมาย ระบบจะกำหนดเส้นทาง Intent ไปยังอินสแตนซ์นั้นผ่านการเรียกใช้เมธอด onNewIntent() แทนการสร้างอินสแตนซ์ใหม่ของกิจกรรม
การเปิดตัวเฉพาะ
(ไม่แนะนําสําหรับการใช้งานทั่วไป)
"singleTask" แบบมีเงื่อนไข ระบบจะสร้างกิจกรรมที่รูทของงานใหม่หรือค้นหากิจกรรมในงานที่มีอยู่ซึ่งมีความเกี่ยวข้องเดียวกัน หากอินสแตนซ์ของกิจกรรมมีอยู่แล้วและอยู่ที่รูทของงาน ระบบจะเปลี่ยนเส้นทาง Intent ไปยังอินสแตนซ์ที่มีอยู่ผ่านการเรียกใช้เมธอด onNewIntent() แทนที่จะสร้างอินสแตนซ์ใหม่
"singleInstance" ไม่ เหมือนกับ "singleTask" ยกเว้นว่าระบบจะไม่เปิดใช้งานกิจกรรมอื่นๆ ในภารกิจที่มีอินสแตนซ์ กิจกรรมจะเป็นสมาชิกเพียงคนเดียวของงานเสมอ
"singleInstancePerTask" แบบมีเงื่อนไข กิจกรรมจะทํางานได้เฉพาะในฐานะกิจกรรมรูทของงาน ซึ่งเป็นกิจกรรมแรกที่สร้างงาน ดังนั้นจึงมีอินสแตนซ์ของกิจกรรมนี้เพียงรายการเดียวในหนึ่งงาน อย่างไรก็ตาม สามารถสร้างอินสแตนซ์ของกิจกรรมหลายครั้งในหลายงานได้

ดังที่แสดงในตารางก่อนหน้า "standard" คือโหมดเริ่มต้นและเหมาะสำหรับกิจกรรมประเภทส่วนใหญ่ "singleTop" ยังเป็นโหมดการเริ่มใช้งานที่พบได้ทั่วไปและมีประโยชน์สําหรับกิจกรรมหลายประเภท โหมดอื่นๆ ซึ่งได้แก่ "singleTask", "singleInstance" และ "singleInstancePerTask" ไม่เหมาะสําหรับการใช้งานส่วนใหญ่ ซึ่งส่งผลให้รูปแบบการโต้ตอบมีแนวโน้มที่ผู้ใช้จะไม่คุ้นเคยและแตกต่างจากแอปพลิเคชันอื่นๆ ส่วนใหญ่อย่างมาก

ไม่ว่าคุณจะเลือกโหมดเปิดใช้งานแบบใด อย่าลืมทดสอบความสามารถในการใช้งานของกิจกรรมระหว่างเปิดใช้งานและเมื่อไปยังกิจกรรมนั้นอีกครั้งจากกิจกรรมและงานอื่นๆ โดยใช้ปุ่มย้อนกลับ

ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดการเริ่มและการทำงานร่วมกับIntentตัวเลือกได้ที่หัวข้องานและกองซ้อนที่ย้อนกลับ

android:lockTaskMode
กำหนดวิธีที่ระบบแสดงกิจกรรมนี้เมื่ออุปกรณ์ทำงานในโหมดงานแบบล็อก

Android สามารถทำงานในโหมดคีออสก์ที่สมจริงซึ่งเรียกว่าโหมดการล็อกงาน เมื่อระบบทำงานในโหมดงานแบบล็อก ผู้ใช้อุปกรณ์มักจะไม่เห็นการแจ้งเตือน เข้าถึงแอปที่ไม่ได้อยู่ในรายการที่อนุญาต หรือกลับไปที่หน้าจอหลัก เว้นแต่ว่าแอป Home จะอยู่ในรายการที่อนุญาต

เฉพาะแอปที่อยู่ในรายการที่อนุญาตโดยเครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) เท่านั้นที่จะทำงานได้เมื่อระบบอยู่ในโหมดงานแบบล็อก อย่างไรก็ตาม ระบบและแอปที่มีสิทธิ์จะทำงานในโหมดงานแบบล็อกได้โดยไม่ต้องอยู่ในรายการที่อนุญาต

ค่าอาจเป็นค่าสตริง R.attr.lockTaskMode ใดค่าหนึ่งต่อไปนี้

ค่า คำอธิบาย
"normal" ค่าเริ่มต้น ซึ่งเป็นค่าเริ่มต้น Tasks จะไม่เปิดในโหมดล็อกงาน แต่สามารถวางไว้ในโหมดดังกล่าวได้โดยเรียกใช้ startLockTask()
"never"

Tasks จะไม่เปิดในโหมด lockTask และผู้ใช้อุปกรณ์จะปักหมุดงานเหล่านี้จากหน้าจอ "ล่าสุด" ไม่ได้

หมายเหตุ: โหมดนี้ใช้ได้กับระบบและแอปพลิเคชันที่มีสิทธิ์เท่านั้น ระบบจะถือว่าแอปที่ไม่มีสิทธิ์ซึ่งมีค่านี้เป็น normal

"if_whitelisted" หาก DPC ให้สิทธิ์แพ็กเกจนี้โดยใช้ DevicePolicyManager.setLockTaskPackages() โหมดนี้จะเหมือนกับ always ยกเว้นว่ากิจกรรมต้องเรียกใช้ stopLockTask() ก่อนจึงจะทำงานเสร็จได้หากเป็นงานที่ล็อกไว้ล่าสุด หาก DPC ไม่อนุญาตแพ็กเกจนี้ โหมดนี้จะเหมือนกับ normal
"always"

งานที่มีรูทที่กิจกรรมนี้จะเปิดในโหมดงานแบบล็อกเสมอ หากระบบอยู่ในโหมดงานแบบล็อกอยู่แล้วเมื่อเปิดใช้งานงานนี้ ระบบจะเปิดใช้งานงานใหม่บนงานปัจจุบัน งานที่เปิดในโหมดนี้จะออกจากโหมดล็อกงานได้โดยเรียกใช้ finish()

หมายเหตุ: โหมดนี้ใช้ได้กับระบบและแอปพลิเคชันที่มีสิทธิ์เท่านั้น ระบบจะถือว่าแอปที่ไม่มีสิทธิ์ซึ่งมีค่านี้เป็น normal

แอตทริบิวต์นี้เปิดตัวใน API ระดับ 23

android:maxRecents
จํานวนงานสูงสุดที่มาจากกิจกรรมนี้ใน screen ล่าสุด เมื่อถึงจำนวนรายการนี้ ระบบจะนำอินสแตนซ์ที่ใช้ล่าสุดน้อยที่สุดออกจากหน้าจอล่าสุด ค่าที่ใช้ได้คือจำนวนเต็มตั้งแต่ 1 ถึง 50 หรือ 1 ถึง 25 ในอุปกรณ์ที่มีหน่วยความจำต่ำ 0 ไม่ถูกต้อง ค่าเริ่มต้นคือ 16
android:maxAspectRatio

สัดส่วนภาพสูงสุดที่กิจกรรมรองรับ หากแอปทำงานในอุปกรณ์ที่มีสัดส่วนภาพกว้างกว่า ระบบจะใส่แถบดำด้านบนและด้านล่างของแอปโดยอัตโนมัติ โดยเว้นพื้นที่บางส่วนของหน้าจอไว้เพื่อให้แอปทำงานในสัดส่วนภาพสูงสุดที่ระบุ

สัดส่วนภาพสูงสุดจะแสดงเป็นรูปแบบทศนิยมของผลหารระหว่างมิติข้อมูลที่ยาวกว่าของอุปกรณ์หารด้วยมิติข้อมูลที่สั้นกว่า เช่น หากสัดส่วนภาพสูงสุดคือ 7:3 ให้ตั้งค่าแอตทริบิวต์นี้เป็น 2.33

ในอุปกรณ์ที่ไม่ใช่อุปกรณ์ที่สวมใส่ได้ ค่าของแอตทริบิวต์นี้ต้องเป็น 1.33 ขึ้นไป ในอุปกรณ์ที่สวมใส่ได้ เวอร์ชันต้องเป็น 1.0 ขึ้นไป มิเช่นนั้น ระบบจะไม่สนใจค่าที่กําหนด

หมายเหตุ: ระบบจะละเว้นแอตทริบิวต์นี้หากกิจกรรมมีการตั้งค่า resizeableActivity เป็น "จริง" เนื่องจากหมายความว่ากิจกรรมรองรับทุกขนาด

ดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์นี้ได้ที่ประกาศสัดส่วนภาพสูงสุด

android:multiprocess
เปิดอินสแตนซ์ของกิจกรรมในกระบวนการของคอมโพเนนต์ที่เริ่มต้นกิจกรรมได้หรือไม่ ค่าจะเป็น "true" หากดำเนินการได้ และ "false" หากดำเนินการไม่ได้ ค่าเริ่มต้นคือ "false"

โดยปกติแล้ว ระบบจะเปิดอินสแตนซ์ใหม่ของกิจกรรมในกระบวนการของแอปพลิเคชันที่กําหนดไว้ เพื่อให้อินสแตนซ์ทั้งหมดของกิจกรรมทํางานในกระบวนการเดียวกัน อย่างไรก็ตาม หากตั้งค่า Flag นี้เป็น "true" อินสแตนซ์ของกิจกรรมจะทํางานในหลายกระบวนการได้ ซึ่งจะช่วยให้ระบบสร้างอินสแตนซ์ได้ทุกที่ที่มีการใช้งาน ในกรณีที่สิทธิ์อนุญาต ซึ่งแทบจะไม่เคยจําเป็นหรือต้องการ

android:name
ชื่อคลาสที่ใช้กิจกรรม ซึ่งเป็นคลาสย่อยของ Activity โดยปกติแล้วค่าแอตทริบิวต์จะเป็นชื่อคลาสแบบเต็มที่สมบูรณ์ เช่น "com.example.project.ExtracurricularActivity" อย่างไรก็ตาม หากอักขระแรกของชื่อคือจุด เช่น ".ExtracurricularActivity" ระบบจะเพิ่มจุดต่อท้ายเนมสเปซที่ระบุไว้ในไฟล์ build.gradle

เมื่อเผยแพร่แอปพลิเคชันแล้ว อย่าเปลี่ยนชื่อนี้ เว้นแต่คุณจะตั้งค่า android:exported="false" ไม่มีค่าเริ่มต้น ต้องระบุชื่อ

android:noHistory
ระบุว่ามีการนํากิจกรรมออกจากกองซ้อนกิจกรรมและสิ้นสุดแล้วหรือไม่ โดยเรียกใช้เมธอด finish() เมื่อผู้ใช้ไปยังส่วนอื่นและกิจกรรมนั้นไม่ปรากฏบนหน้าจออีกต่อไป โดยค่าเริ่มต้น สถานะจะเป็น"true" หากเสร็จสิ้นแล้ว และ"false" หากยังไม่เสร็จสิ้น ค่าเริ่มต้นคือ "false"

ค่า "true" หมายความว่ากิจกรรมไม่ได้ทิ้งร่องรอยที่ผ่านมา รายการดังกล่าวจะไม่อยู่ในกองงานของงานนั้น ผู้ใช้จึงกลับไปดูรายการดังกล่าวไม่ได้ ในกรณีนี้ ระบบจะไม่เรียกonActivityResult()หากคุณเริ่มกิจกรรมอื่นเพื่อดูผลลัพธ์จากกิจกรรมนี้

แอตทริบิวต์นี้เปิดตัวใน API ระดับ 3

android:parentActivityName
ชื่อคลาสของรายการหลักเชิงตรรกะของกิจกรรม ชื่อที่นี่ต้องตรงกับชื่อคลาสที่ให้ไว้กับแอตทริบิวต์ android:name ขององค์ประกอบ <activity> ที่เกี่ยวข้อง

ระบบจะอ่านแอตทริบิวต์นี้เพื่อระบุกิจกรรมที่จะเริ่มต้นเมื่อผู้ใช้แตะปุ่มขึ้นในแถบการดำเนินการ นอกจากนี้ ระบบยังใช้ข้อมูลนี้เพื่อสังเคราะห์กองซ้อนด้านหลังของกิจกรรมด้วย TaskStackBuilder

หากต้องการรองรับ API ระดับ 4-16 คุณสามารถประกาศกิจกรรมหลักด้วยองค์ประกอบ <meta-data> ที่ระบุค่าสำหรับ "android.support.PARENT_ACTIVITY" ดังนี้

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

ดูข้อมูลเพิ่มเติมเกี่ยวกับการประกาศกิจกรรมหลักเพื่อรองรับการไปยังส่วนบนได้ที่การไปยังส่วนบน

แอตทริบิวต์นี้เปิดตัวใน API ระดับ 16

android:persistableMode

กําหนดวิธีเก็บอินสแตนซ์ของกิจกรรมภายในงานที่บรรจุอยู่เมื่ออุปกรณ์รีสตาร์ท

หากกิจกรรมรูทของงานตั้งค่าแอตทริบิวต์นี้เป็น persistRootOnly ระบบจะเก็บรักษาเฉพาะกิจกรรมรูทเท่านั้น ไม่เช่นนั้น ระบบจะตรวจสอบกิจกรรมที่อยู่สูงขึ้นในกองซ้อนที่ย้อนกลับของงาน โดยกิจกรรมใดก็ตามที่ตั้งค่าแอตทริบิวต์นี้เป็นpersistAcrossRebootsจะยังคงอยู่

หากใช้แอตทริบิวต์นี้ คุณต้องตั้งค่าแอตทริบิวต์เป็นค่าใดค่าหนึ่งต่อไปนี้

ค่า คำอธิบาย
persistRootOnly

ค่าเริ่มต้น เมื่อระบบรีสตาร์ท ระบบจะเก็บงานของกิจกรรมไว้ แต่จะใช้เฉพาะ Intent การเริ่มของกิจกรรมรูทเท่านั้น

เมื่อ Intent การเริ่มต้นของแอปโหลดกิจกรรมรูทของแอป กิจกรรมดังกล่าวจะไม่รับออบเจ็กต์ PersistableBundle ดังนั้น อย่าใช้ onSaveInstanceState() เพื่อรักษาสถานะของกิจกรรมรูทของแอปในอุปกรณ์เมื่อรีสตาร์ท

หมายเหตุ: ค่าแอตทริบิวต์นี้จะส่งผลต่อลักษณะการทํางานของแอปก็ต่อเมื่อตั้งค่าไว้ในกิจกรรมรูทของแอปเท่านั้น

persistAcrossReboots

ระบบจะเก็บสถานะของกิจกรรมนี้ไว้ รวมถึงสถานะของกิจกรรมแต่ละรายการที่สูงขึ้นในกองแบ็กที่มีการตั้งค่าแอตทริบิวต์ persistableMode เป็น persistAcrossReboots หากกิจกรรมไม่มีแอตทริบิวต์ persistableMode ที่ตั้งค่าเป็น persistAcrossReboots หรือหากมีการเปิดใช้งานโดยใช้ Flag Intent.FLAG_ACTIVITY_NEW_DOCUMENT ระบบจะไม่เก็บรักษากิจกรรมนั้นไว้ รวมถึงกิจกรรมทั้งหมดที่ซ้อนกันอยู่ด้านบน

เมื่อ Intent โหลดกิจกรรมที่มีการตั้งค่าแอตทริบิวต์ persistableMode เป็น persistAcrossReboots ในแอป กิจกรรมจะได้รับออบเจ็กต์ PersistableBundle ในเมธอด onCreate() คุณจึงใช้ onSaveInstanceState() เพื่อรักษาสถานะของกิจกรรมเมื่ออุปกรณ์รีสตาร์ทได้ ตราบใดที่กําหนดแอตทริบิวต์ persistableMode เป็น persistAcrossReboots

หมายเหตุ: ค่าแอตทริบิวต์นี้จะส่งผลต่อลักษณะการทํางานของแอปแม้ว่าจะตั้งค่าไว้ในกิจกรรมอื่นที่ไม่ใช่กิจกรรมรูทของแอปก็ตาม

persistNever

ระบบจะไม่เก็บสถานะของกิจกรรมไว้

หมายเหตุ: ค่าแอตทริบิวต์นี้จะส่งผลต่อลักษณะการทํางานของแอปก็ต่อเมื่อตั้งค่าไว้ในกิจกรรมรูทของแอปเท่านั้น

แอตทริบิวต์นี้เปิดตัวใน API ระดับ 21

android:permission
ชื่อสิทธิ์ที่ไคลเอ็นต์ต้องมีเพื่อเปิดใช้งานกิจกรรม หรือทำให้กิจกรรมตอบสนองต่อ Intent หากผู้โทรของ startActivity() หรือ startActivityForResult() ไม่ได้รับสิทธิ์ที่ระบุ ระบบจะไม่ส่ง Intent ไปยังกิจกรรม

หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ สิทธิ์ที่ตั้งค่าโดยแอตทริบิวต์ <application> ขององค์ประกอบ permission จะมีผลกับกิจกรรม หากไม่ได้ตั้งค่าแอตทริบิวต์ใดเลย กิจกรรมจะไม่ได้รับการคุ้มครองโดยสิทธิ์

ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ส่วนสิทธิ์ของภาพรวมไฟล์ Manifest ของแอปและเคล็ดลับด้านความปลอดภัย

android:process

ชื่อของกระบวนการที่กิจกรรมทํางาน ปกติแล้ว คอมโพเนนต์ทั้งหมดของแอปพลิเคชันจะทํางานในชื่อกระบวนการเริ่มต้นที่สร้างสําหรับแอปพลิเคชัน และคุณไม่จําเป็นต้องใช้แอตทริบิวต์นี้ แต่หากจําเป็น คุณสามารถลบล้างชื่อกระบวนการเริ่มต้นด้วยแอตทริบิวต์นี้ ซึ่งจะช่วยให้คุณกระจายคอมโพเนนต์แอปไปยังหลายกระบวนการได้

หากชื่อที่กำหนดให้กับแอตทริบิวต์นี้ขึ้นต้นด้วยโคลอน (:) ระบบจะสร้างกระบวนการใหม่ที่เป็นส่วนตัวสำหรับแอปพลิเคชันเมื่อจำเป็น และกิจกรรมจะทำงานในกระบวนการนั้น

หากชื่อกระบวนการขึ้นต้นด้วยอักขระตัวพิมพ์เล็ก กิจกรรมจะทํางานในกระบวนการส่วนกลางที่มีชื่อนั้น โดยมีเงื่อนไขว่าได้รับสิทธิ์ให้ทําเช่นนั้น ซึ่งจะช่วยให้คอมโพเนนต์ในแอปพลิเคชันต่างๆ ใช้กระบวนการร่วมกันได้ จึงช่วยลดการใช้ทรัพยากร

แอตทริบิวต์ process ขององค์ประกอบ <application> สามารถตั้งค่าชื่อกระบวนการเริ่มต้นอื่นสำหรับคอมโพเนนต์ทั้งหมดได้

android:relinquishTaskIdentity

กิจกรรมจะส่งมอบตัวระบุงานให้กับกิจกรรมที่อยู่เหนือในกองงานหรือไม่ งานที่มีกิจกรรมรูทตั้งค่าแอตทริบิวต์นี้เป็น "true" จะแทนที่ Intent พื้นฐานด้วยกิจกรรมถัดไปในงาน

หากกิจกรรมถัดไปมีการตั้งค่าแอตทริบิวต์นี้เป็น "true" ด้วย ก็จะให้ค่า Intent พื้นฐานแก่กิจกรรมที่เปิดใช้งานในแท็บเดียวกัน การดำเนินการนี้จะดำเนินต่อไปสำหรับแต่ละกิจกรรมจนกว่าจะพบกิจกรรมที่มีการตั้งค่าแอตทริบิวต์นี้เป็น "false" ค่าเริ่มต้นคือ "false"

การตั้งค่าแอตทริบิวต์นี้เป็น "true" ยังอนุญาตให้กิจกรรมใช้ ActivityManager.TaskDescription เพื่อเปลี่ยนป้ายกำกับ สี และไอคอนในหน้าจอล่าสุดด้วย

android:requireContentUriPermissionFromCaller

ระบุสิทธิ์ที่จําเป็นในการเปิดใช้งานกิจกรรมนี้เมื่อส่ง URI ของเนื้อหา ค่าเริ่มต้นคือ none ซึ่งหมายความว่าไม่จําเป็นต้องมีสิทธิ์ที่เฉพาะเจาะจง การตั้งค่าแอตทริบิวต์นี้จะจํากัดการเรียกใช้กิจกรรมตามสิทธิ์ของผู้เรียกใช้ หากผู้เรียกใช้ไม่มีสิทธิ์ที่จําเป็น ระบบจะปฏิเสธการเริ่มกิจกรรมผ่าน SecurityException

โปรดทราบว่าการบังคับใช้จะใช้กับ URI เนื้อหาภายใน Intent.getData(), Intent.EXTRA_STREAM และ Intent.getClipData()

อาจเป็นค่าสตริงโดยใช้ '\\;' เพื่อหลีกอักขระ เช่น '\\n' หรือ '\\uxxxx' สำหรับอักขระ Unicode

ต้องเป็นค่าคงที่ค่าใดค่าหนึ่งต่อไปนี้

ค่าคงที่ ค่า คำอธิบาย
ไม่มี 0 โดยค่าเริ่มต้น คุณไม่จำเป็นต้องมีสิทธิ์ใดๆ เป็นพิเศษ
อ่าน 1 บังคับให้ผู้เรียกใช้มีสิทธิ์อ่าน URI เนื้อหาที่ส่ง
readAndWrite 4 บังคับให้ผู้เรียกใช้มีสิทธิ์ทั้งอ่านและเขียน URI เนื้อหาที่ส่ง
readOrWrite 3 บังคับให้ผู้เรียกใช้มีสิทธิ์อ่านหรือเขียน URI เนื้อหาที่ส่ง
เขียนหน่อย 2 บังคับให้ผู้เรียกใช้มีสิทธิ์เขียน URI เนื้อหาที่ส่ง
android:resizeableActivity

ระบุว่าแอปรองรับโหมดหลายหน้าต่างหรือไม่ คุณตั้งค่าแอตทริบิวต์นี้ได้ในองค์ประกอบ <activity> หรือ <application>

หากคุณตั้งค่าแอตทริบิวต์นี้เป็น "true" ผู้ใช้จะเปิดกิจกรรมในโหมดแยกหน้าจอและโหมดอิสระได้ หากคุณตั้งค่าแอตทริบิวต์เป็น "false" ระบบจะทดสอบหรือเพิ่มประสิทธิภาพแอปสำหรับสภาพแวดล้อมแบบหลายหน้าต่างไม่ได้ ระบบจะยังคงแสดงกิจกรรมในโหมดหลายหน้าต่างได้เมื่อใช้โหมดความเข้ากันได้

การตั้งค่าแอตทริบิวต์นี้เป็น "false" ไม่ได้รับประกันว่าจะไม่มีแอปอื่นๆ ในโหมดหลายหน้าต่างที่แสดงบนหน้าจอ เช่น ในโหมดภาพซ้อนภาพ หรือในจอแสดงผลอื่นๆ ดังนั้น การตั้งค่า Flag นี้ไม่ได้หมายความว่าแอปของคุณมีสิทธิ์เข้าถึงทรัพยากรแบบพิเศษ

หากแอปกำหนดเป้าหมายเป็น API ระดับ 24 ขึ้นไปและคุณไม่ได้ระบุค่าสำหรับแอตทริบิวต์นี้ ค่าเริ่มต้นของแอตทริบิวต์จะเป็น "true"

หากแอปกำหนดเป้าหมายเป็น API ระดับ 31 ขึ้นไป แอตทริบิวต์นี้จะทำงานแตกต่างกันในหน้าจอขนาดเล็กและขนาดใหญ่ ดังนี้

  • หน้าจอขนาดใหญ่ (sw >= 600dp): แอปทั้งหมดรองรับโหมดหลายหน้าต่าง แอตทริบิวต์นี้ระบุว่าแอปปรับขนาดได้หรือไม่ ไม่ใช่ว่าแอปรองรับโหมดหลายหน้าต่างหรือไม่ หากเป็น resizeableActivity="false" ระบบจะใส่แอปไว้ในโหมดความเข้ากันได้เมื่อจำเป็นเพื่อให้สอดคล้องกับขนาดการแสดงผล
  • หน้าจอขนาดเล็ก (sw < 600dp): หาก resizeableActivity="true" และความกว้างและความสูงขั้นต่ำของกิจกรรมอยู่ภายในข้อกำหนดของโหมดหลายหน้าต่าง แอปจะรองรับโหมดหลายหน้าต่าง หากเป็น resizeableActivity="false" แสดงว่าแอปไม่รองรับโหมดหลายหน้าต่าง ไม่ว่าจะมีความกว้างและความสูงขั้นต่ำของกิจกรรมเท่าใดก็ตาม

หมายเหตุ: ผู้ผลิตอุปกรณ์สามารถลบล้างลักษณะการทํางานของ API ระดับ 31 ได้

แอตทริบิวต์นี้เพิ่มเข้ามาใน API ระดับ 24

หมายเหตุ: ค่ากิจกรรมรูทของงานจะมีผลกับกิจกรรมเพิ่มเติมทั้งหมดที่เปิดใช้งานในนั้น กล่าวคือ หากกิจกรรมรูทของงานปรับขนาดได้ ระบบจะถือว่ากิจกรรมอื่นๆ ทั้งหมดในงานนี้ปรับขนาดได้ หากกิจกรรมรูทปรับขนาดไม่ได้ กิจกรรมอื่นๆ ในงานก็จะปรับขนาดไม่ได้

android:screenOrientation

การวางแนวของกิจกรรมที่ขอ

เมื่อกิจกรรมเต็มหน้าจอ การวางแนวที่ขอจะทำหน้าที่เป็นคำแนะนำให้เปลี่ยนการวางแนวในหน้าจอนั้นให้ตรงกับค่าที่ขอ ซึ่งอาจส่งผลให้การวางแนวแตกต่างจากการวางแนวจริงของหน้าจอในอวกาศ ผู้ใช้จึงต้องหมุนอุปกรณ์เพื่อใช้แอปต่อ ใน Android 12 (API ระดับ 31) ขึ้นไป ผู้ผลิตอุปกรณ์สามารถกำหนดค่าหน้าจอของอุปกรณ์แต่ละเครื่อง (เช่น หน้าจอขนาดแท็บเล็ตของอุปกรณ์แบบพับได้) ให้ละเว้นคำแนะนำนี้ และบังคับให้กิจกรรมแสดงในแถบดำด้านบนและล่างภายในการวางแนวของอุปกรณ์ที่ผู้ใช้ต้องการแทน ซึ่งส่งผลให้การวางแนวของกิจกรรมตรงกับที่ขอโดยที่ผู้ใช้ไม่ต้องหมุนอุปกรณ์

ในโหมดหลายหน้าต่าง การวางแนวที่ขอจะไม่ใช้เป็นคำแนะนำสำหรับการวางแนวโดยรวม หากกิจกรรมมีการใส่แถบดำ การวางแนวที่ขอจะมีผลกับการใส่แถบดำที่ใช้กับกิจกรรม

ค่าอาจเป็นสตริงใดก็ได้ต่อไปนี้

"unspecified" ค่าเริ่มต้น ระบบจะเลือกการวางแนว นโยบายที่ใช้และตัวเลือกที่เลือกในบริบทหนึ่งๆ จึงอาจแตกต่างกันไปตามอุปกรณ์
"behind" การวางแนวเดียวกับกิจกรรมที่อยู่ด้านล่างในกองกิจกรรม
"landscape" การวางแนวแนวนอน (จอแสดงผลกว้างกว่าสูง)
"portrait" การวางแนวแนวตั้ง (จอแสดงผลสูงกว่าความกว้าง)
"reverseLandscape" การวางแนวนอนในทิศทางตรงข้ามกับแนวนอนปกติ เพิ่มใน API ระดับ 9
"reversePortrait" การวางแนวตั้งในทิศทางตรงข้ามกับแนวตั้งปกติ เพิ่มใน API ระดับ 9
"sensorLandscape" แนวนอน แต่อาจเป็นแนวนอนปกติหรือแนวนอนกลับก็ได้ โดยขึ้นอยู่กับเซ็นเซอร์ของอุปกรณ์ ระบบจะใช้เซ็นเซอร์แม้ว่าผู้ใช้จะล็อกการหมุนตามเซ็นเซอร์ไว้แล้วก็ตาม เพิ่มใน API ระดับ 9
"sensorPortrait" การวางแนวตั้ง แต่อาจเป็นแนวตั้งปกติหรือแนวตั้งกลับด้านก็ได้โดยขึ้นอยู่กับเซ็นเซอร์ของอุปกรณ์ ระบบจะใช้เซ็นเซอร์แม้ว่าผู้ใช้จะล็อกการหมุนตามเซ็นเซอร์ไว้แล้วก็ตาม อย่างไรก็ตาม ระบบอาจไม่อนุญาตให้หมุนกลับหัว ทั้งนี้ขึ้นอยู่กับการกำหนดค่าอุปกรณ์ เพิ่มใน API ระดับ 9
"userLandscape" การวางแนวแนวนอน แต่อาจเป็นแนวนอนปกติหรือแนวนอนกลับก็ได้ โดยขึ้นอยู่กับเซ็นเซอร์ของอุปกรณ์และความต้องการของผู้ใช้ เพิ่มใน API ระดับ 18
"userPortrait" การวางแนวแนวตั้ง แต่อาจเป็นแนวตั้งปกติหรือแนวตั้งกลับก็ได้ โดยขึ้นอยู่กับเซ็นเซอร์ของอุปกรณ์และความต้องการของผู้ใช้ อย่างไรก็ตาม ระบบอาจไม่อนุญาตให้หมุนกลับหัว ทั้งนี้ขึ้นอยู่กับการกำหนดค่าอุปกรณ์ เพิ่มใน API ระดับ 18
"sensor" เซ็นเซอร์การวางแนวของอุปกรณ์จะกำหนดการวางแนว การวางแนวของการแสดงผลจะขึ้นอยู่กับวิธีที่ผู้ใช้ถืออุปกรณ์ ซึ่งจะเปลี่ยนไปเมื่อผู้ใช้หมุนอุปกรณ์ อย่างไรก็ตาม อุปกรณ์บางเครื่องจะไม่หมุนไปยังการวางแนวทั้ง 4 แบบโดยค่าเริ่มต้น หากต้องการใช้การวางแนวทั้ง 4 แบบ ให้ใช้ "fullSensor" ระบบจะใช้เซ็นเซอร์แม้ว่าผู้ใช้จะล็อกการหมุนตามเซ็นเซอร์ไว้ก็ตาม
"fullSensor" เซ็นเซอร์การวางแนวของอุปกรณ์จะกำหนดการวางแนวสำหรับการวางแนวทั้ง 4 แบบ นโยบายนี้คล้ายกับ "sensor" ยกเว้นว่านโยบายนี้อนุญาตให้ใช้การวางแนวหน้าจอได้ 4 แบบไม่ว่าจะรองรับหรือไม่ก็ตาม เช่น ปกติแล้วอุปกรณ์บางรุ่นจะไม่ใช้การวางแนวกลับหัวตั้งหรือกลับหัวนอน แต่ฟีเจอร์นี้จะเปิดใช้การวางแนวเหล่านั้น เพิ่มใน API ระดับ 9
"nosensor" ระบบจะกำหนดการวางแนวโดยไม่ได้อ้างอิงถึงเซ็นเซอร์การวางแนวทางกายภาพ ระบบจะไม่สนใจเซ็นเซอร์นี้ ดังนั้นจอแสดงผลจะไม่หมุนตามวิธีที่ผู้ใช้ย้ายอุปกรณ์
"user" การวางแนวที่ผู้ใช้ต้องการในปัจจุบัน
"fullUser" หากผู้ใช้ล็อกการหมุนตามเซ็นเซอร์ไว้ ตัวเลือกนี้จะทำงานเหมือนกับ user มิเช่นนั้นก็จะทำงานเหมือนกับ fullSensor และอนุญาตให้ใช้การวางแนวหน้าจอได้ 4 แบบ เพิ่มใน API ระดับ 18
"locked" ล็อกการวางแนวตามการหมุนปัจจุบันไม่ว่าจะหมุนอย่างไรก็ตาม เพิ่มใน API ระดับ 18

หมายเหตุ: เมื่อคุณประกาศค่าแนวนอนหรือแนวตั้งค่าใดค่าหนึ่ง ระบบจะถือว่าค่านั้นเป็นข้อกําหนดแบบบังคับสําหรับการวางแนวที่กิจกรรมจะทํางาน ค่าที่คุณประกาศจะเปิดใช้การกรองตามบริการต่างๆ เช่น Google Play เพื่อให้แอปพลิเคชันพร้อมให้บริการในอุปกรณ์ที่รองรับการวางแนวที่กิจกรรมของคุณกำหนดเท่านั้น ตัวอย่างเช่น หากคุณประกาศ "landscape", "reverseLandscape" หรือ "sensorLandscape" แอปพลิเคชันของคุณจะใช้ได้กับอุปกรณ์ที่รองรับการวางแนวแนวนอนเท่านั้น

นอกจากนี้ ให้ประกาศอย่างชัดเจนว่าแอปพลิเคชันของคุณต้องใช้การวางแนวแนวตั้งหรือแนวนอนด้วยองค์ประกอบ <uses-feature> เช่น <uses-feature android:name="android.hardware.screen.portrait"/> นี่เป็นลักษณะการกรองที่ Google Play และบริการอื่นๆ ที่รองรับมีให้ และแพลตฟอร์มเองไม่ได้ควบคุมว่าแอปจะติดตั้งได้หรือไม่เมื่ออุปกรณ์รองรับเฉพาะการวางแนวบางแบบ

android:showForAllUsers

กำหนดว่ากิจกรรมจะแสดงหรือไม่เมื่อผู้ใช้ปัจจุบันของอุปกรณ์เป็นคนละคนกับผู้ใช้ที่เปิดกิจกรรม คุณสามารถตั้งค่าแอตทริบิวต์นี้เป็นค่าตัวอักษร เช่น "true" หรือ "false" หรือตั้งค่าแอตทริบิวต์เป็นแอตทริบิวต์ทรัพยากรหรือธีมที่มีค่าบูลีนก็ได้

แอตทริบิวต์นี้เพิ่มเข้ามาใน API ระดับ 23

android:stateNotNeeded
ระบุว่ากิจกรรมจะสิ้นสุดและเริ่มต้นใหม่ได้สําเร็จหรือไม่โดยที่ไม่ต้องบันทึกสถานะ ค่าจะเป็น "true" หากสามารถรีสตาร์ทได้โดยไม่ต้องอ้างอิงถึงสถานะก่อนหน้า และ "false" หากต้องใช้สถานะก่อนหน้า ค่าเริ่มต้นคือ "false"

โดยปกติแล้ว ระบบจะเรียกใช้onSaveInstanceState()วิธีของกิจกรรมก่อนที่จะปิดกิจกรรมชั่วคราวเพื่อประหยัดทรัพยากร เมธอดนี้จะจัดเก็บสถานะปัจจุบันของกิจกรรมไว้ในออบเจ็กต์ Bundle จากนั้นจะส่งไปยัง onCreate() เมื่อกิจกรรมเริ่มทํางานอีกครั้ง หากตั้งค่าแอตทริบิวต์นี้เป็น "true" ระบบอาจไม่เรียกใช้ onSaveInstanceState() และส่ง onCreate() ไปยัง null แทน Bundle ดังที่เป็นเมื่อกิจกรรมเริ่มต้นขึ้นเป็นครั้งแรก

การตั้งค่า "true" หมายความว่าสามารถเริ่มกิจกรรมอีกครั้งได้โดยไม่เก็บสถานะไว้ ตัวอย่างเช่น กิจกรรมที่แสดงหน้าจอหลักจะใช้การตั้งค่านี้เพื่อให้มั่นใจว่าระบบจะไม่นำกิจกรรมออกหากกิจกรรมขัดข้องด้วยเหตุผลบางอย่าง

android:supportsPictureInPicture

ระบุว่ากิจกรรมรองรับการแสดง ภาพซ้อนภาพหรือไม่

android:taskAffinity

งานที่เกี่ยวข้องกับกิจกรรม กิจกรรมที่มีความเกี่ยวข้องเดียวกันจะอยู่ใน "แอปพลิเคชัน" เดียวกันจากมุมมองของผู้ใช้ ความสัมพันธ์ของงานจะกำหนดโดยความสัมพันธ์ของกิจกรรมรูท

ความสัมพันธ์จะกําหนด 2 สิ่ง ได้แก่ งานที่กําหนดให้กิจกรรมเป็นรายการหลักอีกครั้ง (ดูแอตทริบิวต์ allowTaskReparenting) และงานที่เก็บกิจกรรมไว้เมื่อเปิดใช้งานด้วย Flag FLAG_ACTIVITY_NEW_TASK

โดยค่าเริ่มต้น กิจกรรมทั้งหมดในแอปพลิเคชันจะมีความสัมพันธ์เดียวกัน คุณสามารถตั้งค่าแอตทริบิวต์นี้เพื่อจัดกลุ่มแอตทริบิวต์ต่างๆ แยกกัน และวางกิจกรรมที่กําหนดในแอปพลิเคชันต่างๆ ไว้ในงานเดียวกันได้ หากต้องการระบุว่ากิจกรรมไม่มีความเกี่ยวข้องกับงานใด ให้ตั้งค่าเป็นสตริงว่าง

หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ กิจกรรมจะรับค่ากำหนดความเกี่ยวข้องสำหรับแอปพลิเคชัน ดูแอตทริบิวต์ taskAffinity ของ <application> องค์ประกอบ ชื่อของความสัมพันธ์เริ่มต้นสําหรับแอปพลิเคชันคือเนมสเปซที่ตั้งค่าไว้ในไฟล์build.gradle

android:theme
การอ้างอิงทรัพยากรสไตล์ที่กําหนดธีมโดยรวมสําหรับกิจกรรม ซึ่งจะตั้งค่าบริบทของกิจกรรมให้ใช้ theme โดยอัตโนมัติ และอาจทำให้ภาพเคลื่อนไหว "เริ่มต้น" แสดงขึ้นก่อนที่จะเปิดใช้งานกิจกรรม เพื่อให้ตรงกับลักษณะที่กิจกรรมปรากฏจริงมากขึ้น

หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ กิจกรรมจะรับธีมที่กําหนดไว้สําหรับแอปพลิเคชันโดยรวมจากแอตทริบิวต์ของ<application> องค์ประกอบtheme <application> หากไม่ได้ตั้งค่าแอตทริบิวต์ดังกล่าวด้วย ระบบจะใช้ธีมเริ่มต้นของระบบ ดูข้อมูลเพิ่มเติมได้ที่สไตล์และธีม

android:uiOptions

ตัวเลือกเพิ่มเติมสําหรับ UI ของกิจกรรม ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้

ค่าคำอธิบาย
"none"ไม่มีตัวเลือก UI เพิ่มเติม ซึ่งเป็นค่าเริ่มต้น
"splitActionBarWhenNarrow"เพิ่มแถบที่ด้านล่างของหน้าจอเพื่อแสดงรายการการดำเนินการในแถบแอป หรือที่เรียกว่าแถบการทำงาน เมื่อมีพื้นที่แนวนอนจำกัด เช่น เมื่ออยู่ในโหมดแนวตั้งบนโทรศัพท์มือถือ แถบแอปจะแบ่งออกเป็นส่วนการนําทางด้านบนและแถบด้านล่างสําหรับรายการการดำเนินการแทนที่จะมีรายการการดำเนินการจํานวนน้อยปรากฏในแถบแอปที่ด้านบนของหน้าจอ ซึ่งหมายความว่าจะมีพื้นที่เพียงพอสำหรับรายการการดำเนินการ รวมถึงองค์ประกอบการนำทางและชื่อที่ด้านบน รายการในเมนูจะไม่แยกกันระหว่าง 2 แถบ โดยจะปรากฏร่วมกันเสมอ

ดูข้อมูลเพิ่มเติมเกี่ยวกับแถบแอปได้ที่เพิ่มแถบแอป

แอตทริบิวต์นี้เพิ่มเข้ามาใน API ระดับ 14

android:windowSoftInputMode
วิธีที่หน้าต่างหลักของกิจกรรมโต้ตอบกับหน้าต่างที่มีแป้นพิมพ์บนหน้าจอ การตั้งค่าแอตทริบิวต์นี้จะส่งผลต่อ 2 อย่างต่อไปนี้
  • แป้นพิมพ์บนหน้าจอจะซ่อนหรือแสดงเมื่อกิจกรรมกลายเป็นจุดสนใจของผู้ใช้
  • หน้าต่างหลักของกิจกรรมจะปรับขนาดให้เล็กลงเพื่อให้มีที่ว่างสำหรับแป้นพิมพ์บนหน้าจอ หรือจะเลื่อนเนื้อหาเพื่อให้โฟกัสปัจจุบันมองเห็นได้เมื่อแป้นพิมพ์บนหน้าจอบดบังหน้าต่างบางส่วนหรือไม่

การตั้งค่าต้องเป็นค่าใดค่าหนึ่งตามที่ระบุไว้ในตารางต่อไปนี้ หรือเป็นค่า "state..." 1 ค่าบวกค่า "adjust..." 1 ค่า การตั้งค่าหลายค่าในกลุ่มใดกลุ่มหนึ่ง เช่น ค่า "state..." หลายค่า จะให้ผลลัพธ์ที่ไม่ชัดเจน ค่าแต่ละค่าจะคั่นด้วยแท่งแนวตั้ง (|) ดังที่แสดงในตัวอย่างต่อไปนี้

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

ค่าที่ตั้งไว้ที่นี่ (นอกเหนือจาก "stateUnspecified" และ "adjustUnspecified") จะลบล้างค่าที่ตั้งไว้ในธีม

ค่า คำอธิบาย
"stateUnspecified" ไม่ได้ระบุสถานะว่าแป้นพิมพ์เสมือนซ่อนอยู่หรือแสดงอยู่ ระบบจะเลือกสถานะที่เหมาะสมหรือใช้การตั้งค่าในธีม

การตั้งค่านี้เป็นการตั้งค่าเริ่มต้นสำหรับลักษณะการทำงานของแป้นพิมพ์บนหน้าจอ

"stateUnchanged" แป้นพิมพ์บนหน้าจอจะคงอยู่ในสถานะเดิม ไม่ว่าจะเป็นการแสดงหรือซ่อนอยู่ เมื่อกิจกรรมปรากฏขึ้น
"stateHidden" แป้นพิมพ์บนหน้าจอจะซ่อนอยู่เมื่อผู้ใช้เลือกกิจกรรม กล่าวคือ เมื่อผู้ใช้ไปยังกิจกรรมนั้นๆ แทนที่จะกลับไปยังกิจกรรมนั้นเมื่อออกจากกิจกรรมอื่น
"stateAlwaysHidden" แป้นพิมพ์บนหน้าจอจะซ่อนอยู่เสมอเมื่อหน้าต่างหลักของกิจกรรมมีโฟกัสการป้อนข้อมูล
"stateVisible" แป้นพิมพ์บนหน้าจอจะปรากฏขึ้นเมื่อผู้ใช้เลือกกิจกรรม กล่าวคือ เมื่อผู้ใช้ไปยังกิจกรรมนั้นๆ แทนที่จะย้อนกลับเมื่อออกจากกิจกรรมอื่น
"stateAlwaysVisible" แป้นพิมพ์บนหน้าจอจะปรากฏขึ้นเมื่อหน้าต่างได้รับโฟกัสการป้อนข้อมูล
"adjustUnspecified" ไม่ได้ระบุไว้ว่าหน้าต่างหลักของกิจกรรมจะปรับขนาดเพื่อเพิ่มพื้นที่สำหรับแป้นพิมพ์บนหน้าจอหรือเนื้อหาของหน้าต่างจะเลื่อนเพื่อให้โฟกัสปัจจุบันปรากฏบนหน้าจอ ระบบจะเลือกโหมดใดโหมดหนึ่งโดยอัตโนมัติ ทั้งนี้ขึ้นอยู่กับว่าเนื้อหาของหน้าต่างมีมุมมองเลย์เอาต์ที่เลื่อนเนื้อหาได้หรือไม่ หากมีมุมมองดังกล่าว หน้าต่างจะปรับขนาดโดยสมมติว่าการเลื่อนจะทำให้เนื้อหาทั้งหมดของหน้าต่างปรากฏขึ้นในพื้นที่ที่เล็กลง

การตั้งค่านี้เป็นการตั้งค่าเริ่มต้นสำหรับลักษณะการทำงานของหน้าต่างหลัก

"adjustResize" ระบบจะปรับขนาดหน้าต่างหลักของกิจกรรมเพื่อให้มีพื้นที่สำหรับแป้นพิมพ์บนหน้าจอเสมอ
"adjustPan" ระบบจะไม่ปรับขนาดหน้าต่างหลักของกิจกรรมเพื่อให้มีพื้นที่สำหรับแป้นพิมพ์เสมือน แต่เนื้อหาในหน้าต่างจะเลื่อนโดยอัตโนมัติเพื่อไม่ให้แป้นพิมพ์บดบังโฟกัสปัจจุบัน และผู้ใช้จะเห็นสิ่งที่พิมพ์อยู่เสมอ โดยทั่วไปแล้ว ตัวเลือกนี้ไม่น่าใช้มากกว่าการปรับขนาด เนื่องจากผู้ใช้อาจต้องปิดแป้นพิมพ์บนหน้าจอเพื่อเข้าถึงและโต้ตอบกับส่วนที่บดบังของหน้าต่าง
"adjustNothing" ระบบจะไม่ปรับขนาดหรือเลื่อนหน้าต่างหลักของกิจกรรมเพื่อให้มีพื้นที่สำหรับแป้นพิมพ์บนหน้าจอ กิจกรรมมีหน้าที่จัดสรรพื้นที่สำหรับแป้นพิมพ์บนหน้าจอโดยใช้ส่วนแทรกของหน้าต่าง สําหรับกิจกรรมที่จัดการส่วนแทรกของหน้าต่างอย่างถูกต้อง วิธีนี้จะให้คุณควบคุมวิธีแสดงเนื้อหาของหน้าต่างบนหน้าจอได้มากที่สุด

แอตทริบิวต์นี้เปิดตัวใน API ระดับ 3

เปิดตัวใน
API ระดับ 1 สำหรับแอตทริบิวต์ทั้งหมดยกเว้น noHistory และ windowSoftInputMode ซึ่งเพิ่มใน API ระดับ 3
ดูข้อมูลเพิ่มเติมได้ที่
<application>
<activity-alias>