- ไวยากรณ์:
<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
- แหล่งข้อมูลที่ถอนได้
แสดงแบนเนอร์กราฟิกแบบขยายสำหรับรายการที่เกี่ยวข้อง ใช้กับ
<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 ตามปกติแล้ว ผู้ใช้จะเห็นกิจกรรม Q เพราะนี่คือสิ่งที่พวกเขา ทำงานล่าสุดในงานของ P อย่างไรก็ตาม หาก P ตั้งค่าแฟล็กนี้เป็น
"true"
ข้อผิดพลาดทั้งหมด ของกิจกรรมนอกเหนือจากนั้น ซึ่งในกรณีนี้คือ Q จะถูกนำออกเมื่อผู้ใช้เปิดใช้งาน กิจกรรม P จากหน้าจอหลัก ดังนั้นผู้ใช้จะเห็นเฉพาะ P เมื่อกลับไปที่งานหากแอตทริบิวต์นี้และ
allowTaskReparenting
เป็น"true"
ทั้งคู่ กิจกรรมใดๆ ที่แสดงผู้ปกครองอีกครั้งได้จะถูกย้ายไปที่ งานที่สนใจในเรื่องเดียวกัน จากนั้นจึงยกเลิกกิจกรรมที่เหลือระบบจะละเว้นแอตทริบิวต์นี้หากไม่ได้ตั้งค่า
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
android:colorMode
ระบุโหมดสีของกิจกรรม หากระบุแล้ว อาจเป็น
hdr
หรือwideColorGamut
หากเป็น
hdr
ขอให้แสดงกิจกรรมในช่วงไดนามิกสูงหาก อุปกรณ์ของคุณรองรับหากเป็น
wideColorGamut
ขอให้แสดงกิจกรรมในโหมดขอบเขตสีแบบกว้าง บนอุปกรณ์ที่เข้ากันได้ ในโหมดขอบเขตสีกว้าง หน้าต่างสามารถแสดงผลนอกSRGB
ขอบเขตสำหรับ แสดงสีสันสดใสมากขึ้น หากอุปกรณ์ไม่รองรับการแสดงผลแบบ Wide Color Gamut จะไม่มีผล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแสดงผลในโหมดสีแบบกว้าง โปรดดู ปรับปรุงกราฟิกด้วยเนื้อหา Wide Colorandroid: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"
การเปลี่ยนแปลงรหัสประเทศสำหรับมือถือ IMSI (MCC) เมื่อ ตรวจพบว่า SIM มีการอัปเดต MCC "mnc"
การเปลี่ยนแปลงรหัสเครือข่ายมือถือ IMSI (MNC) เมื่อ ตรวจพบซิมที่อัปเดต 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()
ก็จะต้องเรียกตามปกติว่า ดึงข้อมูลทรัพยากรทั้งหมด รวมถึงดูเลย์เอาต์และเนื้อหาที่ถอนออกได้ เพื่อจัดการการเปลี่ยนแปลงอย่างถูกต้องหมายเหตุ: โปรดใช้ทั้ง
"screenLayout"
และ"smallestScreenSize"
เพื่อจัดการการเปลี่ยนแปลงการกำหนดค่าที่เกี่ยวข้องกับหลายหน้าต่าง รองรับหลายหน้าต่างใน Android 7.0 (API ระดับ 24) ขึ้นไป android:directBootAware
ระบุว่ากิจกรรมเป็นแบบรับรู้การเปิดเครื่องโดยตรงหรือไม่ กล่าวคือ ว่าจะทำงานก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์ได้หรือไม่
หมายเหตุ: ระหว่าง การเปิดเครื่องโดยตรง ซึ่งเป็นกิจกรรมใน แอปพลิเคชันของคุณจะสามารถเข้าถึงเฉพาะข้อมูลที่เก็บไว้ใน พื้นที่เก็บข้อมูลที่ปกป้องอุปกรณ์
ค่าเริ่มต้นคือ
"false"
android:documentLaunchMode
- ระบุวิธีการเพิ่มกิจกรรมใหม่ในงานทุกครั้งที่เริ่มต้น
แอตทริบิวต์นี้อนุญาตให้ผู้ใช้มีเอกสารหลายรายการจากแอปพลิเคชันเดียวกัน
ปรากฏในหน้าจอล่าสุด
แอตทริบิวต์นี้มี 4 ค่า ซึ่งจะมีผลต่อไปนี้เมื่อผู้ใช้เปิดเอกสาร ด้วยแอปพลิเคชัน:
ค่า คำอธิบาย "intoExisting"
ระบบจะค้นหางานที่มี ComponentName
ของ Intent พื้นฐานและ URI ของข้อมูล ตรงกับจุดประสงค์ของการเปิดตัว หากระบบพบงานดังกล่าว ระบบจะล้างข้อมูล งานและเริ่มใหม่ โดยมีกิจกรรมรูทที่เรียกonNewIntent(android.content.Intent)
หากระบบไม่พบงานดังกล่าว ระบบจะสร้างงานใหม่"always"
กิจกรรมนี้จะสร้างงานใหม่สำหรับเอกสารดังกล่าว แม้ว่าเอกสารจะเปิดอยู่แล้ว ซึ่งจะเหมือนกับการตั้งค่าทั้ง FLAG_ACTIVITY_NEW_DOCUMENT
และFLAG_ACTIVITY_MULTIPLE_TASK
Flag"none"
กิจกรรมจะไม่สร้างงานใหม่สำหรับกิจกรรมดังกล่าว ค่านี้เป็นค่าเริ่มต้น สร้างงานใหม่เมื่อตั้งค่า FLAG_ACTIVITY_NEW_TASK
ไว้เท่านั้น หน้าจอ "ล่าสุด" จะดำเนินการกับกิจกรรมตามปกติ โดยจะแสดงงานเดียวสำหรับ แอปซึ่งกลับมาทำงานอีกครั้งจากกิจกรรมใดก็ตามที่ผู้ใช้เรียกใช้ครั้งล่าสุด"never"
กิจกรรมไม่ได้เปิดตัวในเอกสารใหม่แม้ว่า Intent มี FLAG_ACTIVITY_NEW_DOCUMENT
การตั้งค่านี้จะลบล้างลักษณะการทำงาน ของFLAG_ACTIVITY_NEW_DOCUMENT
และFLAG_ACTIVITY_MULTIPLE_TASK
แฟล็ก หากตั้งค่าอย่างใดอย่างหนึ่งไว้ใน และหน้าจอ "ล่าสุด" จะแสดงงานเดียวสำหรับแอปนั้น ซึ่งกลับมาทำงานอีกครั้งจาก กิจกรรมใดก็ตามที่ผู้ใช้เรียกใช้ล่าสุดหมายเหตุ: สำหรับค่าอื่นที่ไม่ใช่
"none"
และ"never"
ค่า กิจกรรมจะกำหนดด้วยlaunchMode="standard"
หากไม่ได้ระบุแอตทริบิวต์นี้ไว้ ใช้งานdocumentLaunchMode="none"
android:enabled
- ระบบสร้างอินสแตนซ์กิจกรรมได้หรือไม่ ตอนนี้
"true"
หากทำได้ และ"false"
หากทำได้ ค่าเริ่มต้น มีค่า"true"
<application>
องค์ประกอบมีenabled
ของตัวเอง ที่ใช้กับคอมโพเนนต์ของแอปพลิเคชันทั้งหมด รวมถึงกิจกรรมด้วย<application>
และแอตทริบิวต์<activity>
ต้องเป็น"true"
เนื่องจากทั้งคู่ ตามค่าเริ่มต้น เพื่อให้ระบบสามารถสร้างอินสแตนซ์ของกิจกรรมได้ หากมี คือ"false"
จะไม่สามารถสร้างอินสแตนซ์ได้ android:enableOnBackInvokedCallback
- แฟล็กนี้ช่วยให้คุณเลือกใช้ภาพเคลื่อนไหวของระบบการคาดการณ์ในระดับกิจกรรมได้ ลักษณะการทำงานนี้
ทำให้ย้ายแอปกิจกรรมขนาดใหญ่แบบหลายกิจกรรมไปยังท่าทางสัมผัสการย้อนกลับแบบคาดเดาได้มากขึ้น
การตั้งค่า
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 และกล้องถ่ายรูปจะได้รับการเร่ง
ทำให้ภาพเคลื่อนไหวลื่นไหลขึ้น การเลื่อนลื่นไหลขึ้น และปรับปรุงขึ้น การตอบสนองโดยรวม แม้แต่สำหรับแอปพลิเคชันที่ไม่ได้ใช้ ไลบรารี OpenGL ของเฟรมเวิร์ก เนื่องจากมีทรัพยากรมากขึ้นที่จำเป็นต้องใช้ เปิดใช้การเร่งฮาร์ดแวร์ แอปของคุณจะใช้ RAM มากขึ้น
ไม่ใช่การเร่งการดำเนินการ OpenGL 2D ทั้งหมด หากเปิดใช้ เพื่อเร่งการแสดงผลด้วยฮาร์ดแวร์ ให้ทดสอบว่าแอปพลิเคชันของคุณสามารถ ใช้ตัวแสดงผลโดยไม่มีข้อผิดพลาด
android:icon
ไอคอนที่แสดงถึงกิจกรรม ไอคอนจะแสดงต่อผู้ใช้เมื่อ ต้องแสดงกิจกรรมบนหน้าจอ เช่น ไอคอน สำหรับกิจกรรมที่เริ่มงานจะแสดงในหน้าต่าง Launcher ไอคอนมักมีป้ายกำกับติดมาด้วย สำหรับข้อมูลเกี่ยวกับป้ายกำกับ โปรดดูที่แอตทริบิวต์
android:label
แอตทริบิวต์นี้ตั้งเป็นการอ้างอิงทรัพยากรที่ถอนออกได้ซึ่งมี คำจำกัดความของรูปภาพ หากไม่ได้ตั้งค่าไว้ ไอคอนที่ระบุไว้สำหรับแอปพลิเคชัน จะใช้จำนวนเต็มแทน สำหรับข้อมูลเพิ่มเติม โปรดดู
<application>
แอตทริบิวต์icon
ขององค์ประกอบไอคอนของกิจกรรม ไม่ว่าจะตั้งค่าไว้ที่นี่หรือตาม
<application>
เป็นไอคอนเริ่มต้นสำหรับตัวกรอง Intent ของกิจกรรมทั้งหมดด้วย สำหรับข้อมูลเพิ่มเติม โปรดดู ขององค์ประกอบ<intent-filter>
icon
android:immersive
- กำหนดการตั้งค่าโหมดใหญ่พิเศษสำหรับกิจกรรมปัจจุบัน หากเป็น
"true"
สมาชิกActivityInfo.flags
จะมีค่าเสมอFLAG_IMMERSIVE
บิต แม้ว่า โหมดใหญ่พิเศษจะเปลี่ยนโหมดขณะรันไทม์โดยใช้เมธอดsetImmersive()
android:label
ป้ายกำกับที่ผู้ใช้อ่านได้สำหรับกิจกรรม ป้ายกำกับแสดงบนหน้าจอ เมื่อกิจกรรมแสดงต่อผู้ใช้ มักจะแสดงร่วมกับ ที่มีไอคอนกิจกรรม หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ป้ายกำกับที่ตั้งไว้สำหรับแอปพลิเคชันโดยรวมจะเป็น ใช้แทน ดูองค์ประกอบ
<application>
label
ป้ายกำกับของกิจกรรม ไม่ว่าจะตั้งค่าไว้ที่นี่หรือตามแท็ก
<application>
ยังเป็นองค์ประกอบ ป้ายกำกับเริ่มต้นสำหรับตัวกรอง Intent ของกิจกรรมทั้งหมด สำหรับข้อมูลเพิ่มเติม โปรดดู ขององค์ประกอบ<intent-filter>
label
ป้ายกำกับได้รับการตั้งค่าเป็นการอ้างอิงไปยังทรัพยากรสตริงเพื่อให้ สามารถแปลได้เหมือนกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ แต่เพื่อความสะดวก ในระหว่างที่คุณพัฒนาแอปพลิเคชัน ยังสามารถตั้งค่าเป็นสตริงดิบได้
android:launchMode
คำแนะนำการเปิดตัวกิจกรรม มีทั้งหมด 5 โหมด ซึ่งทำงานร่วมกับ Flag กิจกรรม (ค่าคงที่
FLAG_ACTIVITY_*
) ใน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
เดียวกัน แต่อุปกรณ์จะเก็บงานไว้ได้เพียง 1 งานเท่านั้นในการค้นหา กิจกรรม"singleTask"
ที่รูทของงานกิจกรรมโหมด
"standard"
และ"singleTop"
แตกต่างกัน ในแง่หนึ่ง ทุกครั้งที่มีการแสดงความตั้งใจใหม่สำหรับ"standard"
กิจกรรม อินสแตนซ์ใหม่ของชั้นเรียนจะถูกสร้างขึ้นเพื่อตอบสนองต่อความตั้งใจนั้น แต่ละอินสแตนซ์จะรองรับ Intent เดียว ในทํานองเดียวกัน อินสแตนซ์ใหม่ของกิจกรรม"singleTop"
อาจ ที่สร้างขึ้นเพื่อจัดการกับ Intent ใหม่แต่หากงานเป้าหมายมี กิจกรรมที่มีอยู่ที่ด้านบนสุดของสแต็ก อินสแตนซ์นั้น จะได้รับ Intent ใหม่ใน
onNewIntent()
สาย ระบบจะไม่สร้างอินสแตนซ์ใหม่ มิฉะนั้น หากเป็นอินสแตนซ์ที่มีอยู่ของ กิจกรรม"singleTop"
อยู่ในงานเป้าหมาย แต่ไม่ใช่ที่ด้านบนสุดของ หรือหากสแต็กอยู่ที่ด้านบนของสแต็ก แต่ไม่อยู่ในงานเป้าหมาย อินสแตนซ์ใหม่จะ และพุชไปยังกองซ้อนในทำนองเดียวกัน หากผู้ใช้ นำทาง สูงสุดของกิจกรรมในสแต็กปัจจุบัน ลักษณะการทำงานจะพิจารณาตาม โหมดการเรียกใช้งานกิจกรรมของผู้ปกครอง หากกิจกรรมระดับบนสุดมีโหมดเปิดใช้งาน
singleTop
(หรือ Intentup
มีFLAG_ACTIVITY_CLEAR_TOP
) ระบบจะนำผู้ปกครองไปที่ ที่ด้านบนของสแต็ก และสถานะของสแต็กจะยังคงอยู่เหมือนเดิมได้รับความตั้งใจในการนำทางแล้ว โดย
onNewIntent()
ของกิจกรรมของผู้ปกครอง หากกิจกรรมของผู้ปกครองมีโหมดเปิดใช้งานstandard
และup
Intent ไม่มีFLAG_ACTIVITY_CLEAR_TOP
กิจกรรมปัจจุบัน และ ระดับบนสุดทั้งแยกออกจากกองและอินสแตนซ์ใหม่ของกิจกรรมระดับบนสุดเพื่อรับ Intent ในการไปยังส่วนต่างๆโหมด
"singleInstance"
ยังแตกต่างจาก"singleTask"
และ"singleInstancePerTask"
เพียงแง่มุมเดียว นั่นคือกิจกรรมที่มี โหมดเปิดใช้งาน"singleTask"
หรือ"singleInstancePerTask"
จะทำให้กิจกรรมอื่นๆ เป็น"standard"
และ กิจกรรม"singleTop"
เป็นส่วนหนึ่งของงานต ในทางกลับกัน กิจกรรม
"singleInstance"
ไม่อนุญาต ให้เป็นส่วนหนึ่งของงาน ต้องเป็นกิจกรรมเดียวในงาน หาก เริ่มกิจกรรมอื่น กิจกรรมนั้นจะได้รับมอบหมายให้กับงานอื่น หากFLAG_ACTIVITY_NEW_TASK
เป็นความตั้งใจกรณีการใช้งาน โหมดเปิดใช้งาน หากมีอินสแตนซ์หลายรายการ ความคิดเห็น การเปิดตัวตามปกติสำหรับกิจกรรมส่วนใหญ่ "standard"
ใช่ ค่าเริ่มต้น ระบบจะสร้างอินสแตนซ์กิจกรรมใหม่ทุกครั้งใน กำหนดเป้าหมายของงาน และกำหนดเส้นทางความตั้งใจไปยังงานนั้น "singleTop"
มีเงื่อนไข หากมีอินสแตนซ์ของกิจกรรมที่ด้านบนของงานเป้าหมายอยู่แล้ว ระบบจะกำหนดเส้นทางความตั้งใจไปยังอินสแตนซ์นั้นผ่านการเรียกไปยังเมธอด onNewIntent()
ของอินสแตนซ์แทนที่จะสร้าง กิจกรรมครั้งใหม่การเปิดตัวเฉพาะทาง
(ไม่แนะนำสำหรับการใช้งานทั่วไป)"singleTask"
มีเงื่อนไข ระบบจะสร้างกิจกรรมที่รูทของงานใหม่หรือค้นหากิจกรรมในงานที่มีอยู่ที่มีผู้สนใจเดียวกัน หากมีอินสแตนซ์ของกิจกรรมอยู่แล้วและอยู่ที่รูทของงาน กำหนดเส้นทางความตั้งใจไปยังอินสแตนซ์ที่มีอยู่ผ่านการเรียกไปยังเมธอด onNewIntent()
ของอินสแตนซ์แทนที่จะสร้าง อันใหม่นะ"singleInstance"
ไม่ เหมือนกับ "singleTask"
ยกเว้นว่าระบบไม่ได้เปิด กิจกรรมอื่นๆ ลงในงานที่มีอินสแตนซ์ดังกล่าว กิจกรรมจะเป็น และเป็นสมาชิกคนเดียวที่ทำงานได้"singleInstancePerTask"
มีเงื่อนไข กิจกรรมสามารถเรียกใช้เป็นกิจกรรมรากของงานเท่านั้น ซึ่งเป็นกิจกรรมแรก ที่สร้างงาน ดังนั้นจึงมีเพียงอินสแตนซ์เดียว กิจกรรมนี้ในงาน อย่างไรก็ตาม กิจกรรมดังกล่าวสามารถสร้างขึ้นได้หลายครั้งในงานต่างๆ ตามที่แสดงในตารางก่อนหน้านี้
"standard"
คือโหมดเริ่มต้น เหมาะสำหรับกิจกรรมส่วนใหญ่"singleTop"
ยังเป็น โหมดเปิดใช้งานทั่วไปและมีประโยชน์สำหรับกิจกรรมหลายประเภท โหมดอื่นๆ"singleTask"
,"singleInstance"
และ"singleInstancePerTask"
ไม่เหมาะสมกับแอปพลิเคชันส่วนใหญ่ ทำให้เกิดรูปแบบการโต้ตอบที่อาจไม่คุ้นเคย และแตกต่างจากแอปพลิเคชันอื่นๆ ส่วนใหญ่อย่างมากไม่ว่าคุณจะเลือกโหมดเปิดใช้งานใด อย่าลืมทดสอบความสามารถในการใช้งาน ระหว่างการเปิดตัวและเมื่อกลับไปยังกิจกรรมจาก กิจกรรมและงานอื่นๆ โดยใช้ปุ่มย้อนกลับ
ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดเปิดใช้งานและการโต้ตอบกับ
Intent
ธง โปรดดู Tasks และ Back Stackandroid: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
- จำนวนงานสูงสุดที่เกิดจากกิจกรรมนี้ใน หน้าจอล่าสุด เมื่อมีรายการครบจำนวนดังกล่าว ระบบจะนำรายการ ใช้อินสแตนซ์จากหน้าจอล่าสุด ค่าที่ใช้ได้คือจำนวนเต็มตั้งแต่ 1 ถึง 50 หรือ 1 ถึง 25 ในอุปกรณ์ที่มีหน่วยความจำต่ำ 0 ไม่ถูกต้อง ค่าเริ่มต้นคือ 16
android:maxAspectRatio
สัดส่วนภาพสูงสุดที่กิจกรรมรองรับ หากแอปทำงาน บนอุปกรณ์ที่มีสัดส่วนภาพกว้างกว่า ระบบจะปรับแอปเป็นแถบดำด้านบน-ล่างของภาพโดยอัตโนมัติ ปล่อยพื้นที่หน้าจอบางส่วนไว้โดยไม่ใช้เพื่อให้แอปสามารถทำงานได้ตามสัดส่วนภาพสูงสุดที่ระบุไว้
สัดส่วนการแสดงผลสูงสุดแสดงในรูปแบบเลขฐานสิบของผลหารของอุปกรณ์ที่ยาวกว่า หารด้วยมิติข้อมูลที่สั้นกว่า เช่น หากสัดส่วนภาพสูงสุดคือ 7:3 ให้กำหนดค่าของแอตทริบิวต์นี้เป็น 2.33
ในอุปกรณ์ที่สวมใส่ไม่ได้ ค่าของแอตทริบิวต์นี้ต้องเป็น 1.33 ขึ้นไป สำหรับอุปกรณ์ที่สวมใส่ได้ ค่าจะต้องเป็น 1.0 ขึ้นไป มิฉะนั้น ระบบจะไม่สนใจ กำหนดค่า
หมายเหตุ: ระบบจะละเว้นแอตทริบิวต์นี้หากกิจกรรม ตั้งค่า
resizeableActivity
เป็น "จริง" เนื่องจากหมายความว่ากิจกรรมของคุณ รองรับทุกขนาดดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์นี้ได้ที่ ประกาศสัดส่วนภาพสูงสุด
android:multiprocess
- สามารถเรียกใช้อินสแตนซ์ของกิจกรรมในกระบวนการของคอมโพเนนต์ได้หรือไม่
ที่เป็นจุดเริ่มต้น Conversion จะเป็น
"true"
หากทำได้ และ"false"
หากไม่ใช่ ค่าเริ่มต้นคือ"false"
โดยปกติแล้วจะมีการเปิดตัวกิจกรรมครั้งใหม่ในกระบวนการของ ดังนั้น อินสแตนซ์ทั้งหมดของกิจกรรมจึงทำงาน ขั้นตอนได้ อย่างไรก็ตาม หากตั้งค่าแฟล็กนี้เป็น
"true"
อินสแตนซ์ของ สามารถเรียกใช้กิจกรรมได้ในหลายกระบวนการ เพื่อให้ระบบสร้างอินสแตนซ์ ไม่ว่าจะใช้งานที่ไหนก็ตาม ให้สิทธิ์อนุญาต ซึ่งเป็นสิ่งที่เกือบ ไม่จำเป็นหรือไม่เป็นที่ต้องการ android:name
- ชื่อคลาสที่ทำกิจกรรม คลาสย่อยของ
Activity
ค่าแอตทริบิวต์คือ โดยทั่วไปแล้ว การทดสอบที่สมบูรณ์ ชื่อชั้นเรียน เช่น"com.example.project.ExtracurricularActivity"
แต่ถ้าอักขระตัวแรกของชื่อเป็นเครื่องหมายจุด เช่น".ExtracurricularActivity"
จะต่อท้าย namespace ที่ระบุในbuild.gradle
ไฟล์เมื่อคุณเผยแพร่แอปพลิเคชันของคุณแล้ว อย่า เปลี่ยนชื่อนี้ เว้นแต่คุณจะตั้งค่า
android:exported="false"
ไม่มีค่าเริ่มต้น ต้องระบุชื่อ android:noHistory
- นำกิจกรรมออกจากสแต็กกิจกรรมและ
เสร็จสิ้นแล้ว โดยการเรียกใช้
finish()
เมื่อผู้ใช้ออกจากหน้าไป และไม่ได้ แสดงบนหน้าจอ ค่าใช้จ่าย"true"
หากสิ้นสุด และ"false"
หากไม่ ค่าเริ่มต้นคือ"false"
ค่า
"true"
หมายความว่ากิจกรรมจะไม่ทิ้ง การติดตามประวัติศาสตร์ และจะไม่อยู่ในสแต็กกิจกรรมของงาน เพื่อไม่ให้ผู้ใช้กลับไปใช้ได้อีก ในกรณีนี้ จะไม่มีการโทรหาonActivityResult()
หากคุณ เริ่มกิจกรรมอื่นเพื่อรับผลลัพธ์จากกิจกรรมนี้แอตทริบิวต์นี้เปิดตัวใน API ระดับ 3
android:parentActivityName
- ชื่อคลาสของระดับบนสุดเชิงตรรกะของกิจกรรม ชื่อในส่วนนี้ต้องตรงกับชั้นเรียน
ชื่อที่กำหนดให้กับองค์ประกอบ
<activity>
ที่เกี่ยวข้องandroid:name
ระบบจะอ่านแอตทริบิวต์นี้เพื่อกำหนดกิจกรรมที่จะเริ่มต้นเมื่อ ผู้ใช้แตะปุ่มขึ้นในแถบการทำงาน นอกจากนี้ระบบยังสามารถใช้ข้อมูลนี้เพื่อ สังเคราะห์กิจกรรมกลุ่มแบ็กสแต็กด้วย
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
ระบบจะเก็บรักษาเฉพาะกิจกรรมรูทเท่านั้น มิฉะนั้น กิจกรรมที่อยู่ในลำดับที่สูงกว่า Back Stack จะได้รับการตรวจสอบ กิจกรรมใดๆ ก็ตามเหล่านี้ที่กำหนดค่าของแอตทริบิวต์นี้เป็นpersistAcrossReboots
จะยังคงอยู่หากใช้แอตทริบิวต์นี้ คุณต้องกำหนดค่าของแอตทริบิวต์นี้เป็นหนึ่งในแอตทริบิวต์ ดังต่อไปนี้:
ค่า คำอธิบาย persistRootOnly
ค่าเริ่มต้น เมื่อระบบรีสตาร์ท งานกิจกรรมจะ แต่จะใช้ Intent การเปิดตัวกิจกรรมรูทเท่านั้น
เมื่อ Intent เปิดใช้งานแอปโหลดกิจกรรมรูทของแอป กิจกรรมไม่ได้รับออบเจ็กต์
PersistableBundle
ดังนั้นโปรดอย่าใช้onSaveInstanceState()
เพื่อรักษาสถานะกิจกรรมรูทของแอปในอุปกรณ์ต่างๆ รีสตาร์ทหมายเหตุ: ค่าแอตทริบิวต์นี้ส่งผลต่อแอปของคุณ พฤติกรรมเฉพาะเมื่อมีการตั้งค่าไว้ในกิจกรรมรูทของแอป
persistAcrossReboots
สถานะของกิจกรรมนี้จะยังคงอยู่ รวมถึงสถานะของ ทำกิจกรรมให้สูงขึ้น กลับ สแต็กที่มีการตั้งค่าแอตทริบิวต์
persistableMode
ของตนเองเป็นpersistAcrossReboots
ถ้ากิจกรรมไม่มี แอตทริบิวต์persistableMode
ที่ตั้งค่าเป็นpersistAcrossReboots
หรือหากเปิดตัวแล้วโดยใช้Intent.FLAG_ACTIVITY_NEW_DOCUMENT
รายงาน กิจกรรมนั้นพร้อมกับกิจกรรมอื่นๆ ทางด้านบน กลุ่ม จะไม่สงวนไว้เมื่อ Intent โหลดกิจกรรมที่
persistableMode
ได้รับการตั้งค่าเป็นpersistAcrossReboots
ในแอปของคุณ กิจกรรมได้รับออบเจ็กต์PersistableBundle
ในonCreate()
ดังนั้น คุณสามารถใช้onSaveInstanceState()
เพื่อรักษาสถานะของกิจกรรมขณะรีสตาร์ทอุปกรณ์ ตั้งค่าแอตทริบิวต์persistableMode
เป็นpersistAcrossReboots
หมายเหตุ: ค่าแอตทริบิวต์นี้ส่งผลต่อแอปของคุณ ทำงานแม้ว่าจะตั้งค่าไว้ในกิจกรรมอื่นที่ไม่ใช่รากของแอปก็ตาม กิจกรรม
persistNever
โดยสถานะของกิจกรรมจะหายไป
หมายเหตุ: ค่าแอตทริบิวต์นี้ส่งผลต่อแอปของคุณ พฤติกรรมเฉพาะเมื่อมีการตั้งค่าไว้ในกิจกรรมรูทของแอป
แอตทริบิวต์นี้เปิดตัวใน API ระดับ 21
android:permission
- ชื่อสิทธิ์ที่ลูกค้าต้องใช้ในการเปิดกิจกรรม
หรือทำให้โมเดลตอบสนองความตั้งใจ หากผู้โทร
startActivity()
หรือ วันที่startActivityForResult()
ไม่ได้รับสิทธิ์ที่ระบุ ระบบจะไม่นำส่ง Intent ไปยังกิจกรรมหากไม่ได้ตั้งค่าแอตทริบิวต์นี้ไว้ สิทธิ์ที่กำหนดโดย
<application>
ขององค์ประกอบ วันที่permission
ที่นำไปใช้กับกิจกรรม หากไม่ได้ตั้งค่าแอตทริบิวต์ไว้ กิจกรรมจะไม่ได้รับการปกป้องโดย สิทธิ์ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ สิทธิ์ ในภาพรวมไฟล์ Manifest ของแอปและ เคล็ดลับความปลอดภัย
android:process
ชื่อของกระบวนการที่กิจกรรมทำงาน โดยปกติแล้ว องค์ประกอบทั้งหมดของ แอปพลิเคชันจะทำงานในชื่อกระบวนการเริ่มต้นที่สร้างขึ้นสำหรับแอปพลิเคชัน และคุณไม่ต้อง คุณต้องใช้แอตทริบิวต์นี้ แต่หากจำเป็น คุณสามารถลบล้างกระบวนการเริ่มต้นได้ ด้วยแอตทริบิวต์นี้เพื่อให้คุณกระจายคอมโพเนนต์แอปไปทั่ว ที่หลากหลาย
หากชื่อที่กำหนดให้กับแอตทริบิวต์นี้เริ่มต้นด้วยโคลอน (
:
) ซึ่งเป็นแบบส่วนตัวสำหรับแอปพลิเคชัน จะสร้างขึ้นเมื่อจำเป็น และ กิจกรรมจะทำงานในกระบวนการนั้นหากชื่อกระบวนการเริ่มต้นด้วยอักขระตัวพิมพ์เล็ก กิจกรรมจะทำงาน ในกระบวนการส่วนกลางของชื่อนั้น หากชื่อนั้นได้รับอนุญาตให้ดำเนินการดังกล่าว ทำให้คอมโพเนนต์ต่างๆ ในแอปพลิเคชันต่างๆ สามารถแบ่งปันกระบวนการได้โดย การใช้ทรัพยากร
ขององค์ประกอบ
<application>
วันที่process
สามารถตั้งชื่อกระบวนการเริ่มต้นเป็นชื่ออื่นสำหรับคอมโพเนนต์ทั้งหมดได้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 เนื้อหาที่ส่งผ่าน อ่านหรือเขียน 3 บังคับให้ผู้เรียกใช้มีสิทธิ์อ่านหรือเขียนใน URI เนื้อหาที่ผ่าน เขียน 2 บังคับให้ผู้เรียกใช้มีสิทธิ์ในการเขียน URI เนื้อหาที่ผ่าน android:resizeableActivity
-
ระบุว่าแอปรองรับโหมดหลายหน้าต่างหรือไม่ คุณ ตั้งค่าแอตทริบิวต์นี้ใน
<activity>
หรือ<application>
หากคุณตั้งค่าแอตทริบิวต์นี้เป็น
"true"
ผู้ใช้จะเปิดกิจกรรมได้ใน โหมดแยกหน้าจอและโหมดรูปแบบอิสระ หากคุณตั้งค่าแอตทริบิวต์เป็น"false"
แอปจะ ไม่สามารถทดสอบหรือเพิ่มประสิทธิภาพสำหรับสภาพแวดล้อมที่มีหลายหน้าต่างได้ ระบบจะดำเนินการต่อไปนี้ ยังคงทำให้กิจกรรมอยู่ในโหมดหลายหน้าต่างที่ใช้โหมดความเข้ากันได้การตั้งค่าแอตทริบิวต์นี้เป็น
"false"
ไม่ได้รับประกันว่าไม่มีแอตทริบิวต์ดังกล่าว แอปอื่นๆ ในโหมดหลายหน้าต่างที่ปรากฏบนหน้าจอ เช่น การแสดงภาพซ้อนภาพ หรือ บนจอแสดงผลอื่นๆ ดังนั้น การตั้งค่าแฟล็กนี้ไม่ได้หมายความว่าแอปของคุณ มีสิทธิ์เข้าถึงทรัพยากรเฉพาะตัวหากแอปกำหนดเป้าหมายเป็น API ระดับ 24 ขึ้นไปและคุณไม่ได้ระบุค่า สำหรับแอตทริบิวต์นี้ ค่าแอตทริบิวต์เริ่มต้นเป็น
"true"
หากแอปกำหนดเป้าหมายเป็น API ระดับ 31 ขึ้นไป แอตทริบิวต์นี้จะทำงานต่างกันไปสำหรับขนาดเล็กและขนาดใหญ่ ได้แก่
- หน้าจอขนาดใหญ่ (sw >= 600dp): แอปทั้งหมดรองรับโหมดหลายหน้าต่าง แอตทริบิวต์จะระบุ
สามารถปรับขนาดแอปได้หรือไม่ ไม่ใช่ว่าแอปรองรับโหมดหลายหน้าต่างหรือไม่ ถ้า
resizeableActivity="false"
แอปจะเข้าสู่โหมดความเข้ากันได้เมื่อจำเป็น เพื่อให้สอดคล้องกับขนาดที่แสดง - หน้าจอขนาดเล็ก (sw < 600dp): หาก
resizeableActivity="true"
และต่ำสุด ความกว้างและความสูงขั้นต่ำของกิจกรรมอยู่ภายในข้อกำหนดของหลายหน้าต่าง แอป สนับสนุนโหมดหลายหน้าต่าง หากเป็นresizeableActivity="false"
แอปจะไม่ทำ สนับสนุนโหมดหลายหน้าต่างโดยไม่คำนึงถึงความกว้างและความสูงขั้นต่ำของกิจกรรม
หมายเหตุ: ผู้ผลิตอุปกรณ์ลบล้าง API ระดับ 31 ได้ พฤติกรรมของคุณ
แอตทริบิวต์นี้มีการเพิ่มใน API ระดับ 24
หมายเหตุ: ระบบจะใช้ค่ากิจกรรมรูทของงานกับ กิจกรรมเพิ่มเติมที่เปิดในงาน กล่าวคือ หากกิจกรรมรากของ งานสามารถปรับขนาดได้ จากนั้น ระบบจะจัดการกับกิจกรรมอื่นๆ ทั้งหมดใน ที่ปรับขนาดได้ หากกิจกรรมรากไม่สามารถปรับขนาดได้ กิจกรรมในงานนั้นปรับขนาดไม่ได้
- หน้าจอขนาดใหญ่ (sw >= 600dp): แอปทั้งหมดรองรับโหมดหลายหน้าต่าง แอตทริบิวต์จะระบุ
สามารถปรับขนาดแอปได้หรือไม่ ไม่ใช่ว่าแอปรองรับโหมดหลายหน้าต่างหรือไม่ ถ้า
android:screenOrientation
การวางแนวที่ขอของกิจกรรม
เมื่อกิจกรรมแสดงเต็มหน้าจอ การวางแนวที่ขอจะทำหน้าที่เป็นคำแนะนำ เปลี่ยนการวางแนวบนหน้าจอนั้นให้ตรงกับค่าที่ขอ ซึ่งอาจส่งผลให้ การวางแนวที่แตกต่างจากการวางแนวหน้าจอในอวกาศ หมุนอุปกรณ์เพื่อใช้แอปต่อ ใน Android 12 (ระดับ API 31) ขึ้นไป ผู้ผลิตอุปกรณ์สามารถกำหนดค่าอุปกรณ์แต่ละเครื่องได้ (เช่น หน้าจอขนาดแท็บเล็ตของอุปกรณ์แบบพับได้) เพื่อละเว้นคำแนะนำนี้ และ บังคับให้กิจกรรมมีแถบดำด้านบน-ล่างของภาพตามการวางแนวอุปกรณ์ที่ผู้ใช้ต้องการ ช่วงเวลานี้ ทำให้การวางแนวของกิจกรรมตรงกับรายการที่ขอโดยผู้ใช้ไม่จำเป็นต้อง หมุนอุปกรณ์ของตน
ในโหมดหลายหน้าต่าง การวางแนวที่ร้องขอไม่ได้เป็นแนวทางสำหรับ การวางแนว หากกิจกรรมคือ Letterboxed คำขอ การวางแนวส่งผลต่อแถบดำด้านบน-ล่างของภาพที่ใช้กับกิจกรรม
ค่าอาจเป็นสตริงใดสตริงหนึ่งต่อไปนี้
"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
และอนุญาต 1 ใน 4 ข้อที่สามารถทำได้ การวางแนวหน้าจอ เพิ่มใน API ระดับ 18 แล้ว"locked"
ล็อกการวางแนวตามการหมุนปัจจุบัน ไม่ว่าจะอยู่ที่ใดก็ตาม เพิ่มใน API ระดับ 18 แล้ว หมายเหตุ: เมื่อคุณประกาศค่าแนวนอนหรือแนวตั้งค่าใดค่าหนึ่ง ถือว่าเป็นข้อกำหนดที่บังคับสำหรับการวางแนวของกิจกรรม ค่าที่คุณประกาศจะช่วยให้สามารถกรองตามบริการ เช่น Google Play ดังนั้นแอปพลิเคชันของคุณจึง ใช้ได้เฉพาะกับอุปกรณ์ที่รองรับการวางแนวตามที่กิจกรรมของคุณกำหนดไว้ สำหรับ เช่น หากคุณประกาศ
"landscape"
,"reverseLandscape"
หรือ"sensorLandscape"
แอปพลิเคชันของคุณจะพร้อมใช้งานในอุปกรณ์ที่รองรับเท่านั้น แนวนอนประกาศให้ชัดเจนด้วยว่า แอปพลิเคชันของคุณกำหนดให้มีการวางแนวตั้งหรือแนวนอนโดยใช้
<uses-feature>
องค์ประกอบ เช่น<uses-feature android:name="android.hardware.screen.portrait"/>
นี่เป็นลักษณะการทำงานของการกรอง จาก Google Play และบริการอื่นๆ ที่รองรับ 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_ACTIVITY_NEW_TASK
แจ้งโดยค่าเริ่มต้น กิจกรรมทั้งหมดในแอปพลิเคชันจะมีกลุ่มความสนใจเดียวกัน คุณ สามารถตั้งค่าแอตทริบิวต์นี้ให้จัดกลุ่มแอตทริบิวต์แตกต่างกันได้ กิจกรรมที่กำหนดไว้ในแอปพลิเคชันต่างๆ ภายในงานเดียวกัน ถึง ระบุว่ากิจกรรมไม่มีผู้สนใจสำหรับงานใดๆ ให้ตั้งค่า ลงในสตริงว่าง
หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ กิจกรรมจะรับค่าชุดแอฟฟินิตี้ สำหรับแอปพลิเคชัน โปรดดู
<application>
ขององค์ประกอบ วันที่taskAffinity
ชื่อของกลุ่มความสนใจเริ่มต้นสำหรับแอปพลิเคชันคือ เนมสเปซที่ตั้งค่าไว้ในbuild.gradle
ไฟล์android:theme
- การอ้างอิงทรัพยากรรูปแบบซึ่งกำหนดธีมโดยรวมของกิจกรรม
การดําเนินการนี้จะตั้งค่าบริบทของกิจกรรมโดยอัตโนมัติเพื่อใช้
theme
และอาจ ทำให้ "เริ่มทำงาน" ภาพเคลื่อนไหวก่อนเริ่มกิจกรรม ตรงกับลักษณะของกิจกรรมจริงหากไม่ได้ตั้งค่าแอตทริบิวต์นี้ไว้ กิจกรรมจะรับค่าชุดธีมสำหรับ แอปพลิเคชันโดยรวม จาก
<application>
ขององค์ประกอบ วันที่theme
หากไม่ได้ตั้งค่าแอตทริบิวต์ดังกล่าวไว้ ระบบจะใช้ธีมเริ่มต้นของระบบ สำหรับข้อมูลเพิ่มเติม โปรดดูข้อมูลที่หัวข้อรูปแบบและธีม android:uiOptions
ตัวเลือกเพิ่มเติมสำหรับ UI ของกิจกรรม ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้
ค่า คำอธิบาย "none"
ไม่มีตัวเลือก UI เพิ่มเติม โดยตัวเลือกนี้คือค่าเริ่มต้น "splitActionBarWhenNarrow"
เพิ่มแถบที่ ที่ด้านล่างของหน้าจอเพื่อแสดงรายการการทำงานในแถบแอป หรือที่เรียกว่า แถบการดำเนินการเมื่อ พื้นที่แนวนอน เช่น เมื่ออยู่ในโหมดแนวตั้งบนโทรศัพท์มือถือ แทนที่จะเป็นช่องเล็กๆ จำนวนรายการการทำงานที่ปรากฏในแถบแอปที่ด้านบนของหน้าจอ แถบแอป แบ่งออกเป็นส่วนการนำทางด้านบนและแถบด้านล่างสำหรับรายการการทำงาน ซึ่งหมายความว่า จำนวนพื้นที่ที่สามารถใช้งานได้ไม่เพียงแค่สำหรับรายการการทำงาน แต่รวมถึงการนำทางและชื่อ ที่ด้านบน รายการในเมนูไม่ได้แบ่งออกเป็น 2 แถบ โดยจะปรากฏเสมอ ดูข้อมูลเพิ่มเติมเกี่ยวกับแถบแอปได้ที่เพิ่มแถบแอป
แอตทริบิวต์นี้มีการเพิ่มใน API ระดับ 14
android:windowSoftInputMode
- วิธีที่หน้าต่างหลักของกิจกรรมโต้ตอบกับหน้าต่างที่มี
แป้นพิมพ์บนหน้าจอ การตั้งค่าสำหรับแอตทริบิวต์นี้
สิ่งต่างๆ:
- ซอฟต์แป้นพิมพ์จะซ่อนหรือมองเห็นได้เมื่อกิจกรรมกลายเป็น ความสนใจของผู้ใช้
- หน้าต่างหลักของกิจกรรม ปรับขนาดให้เล็กลงเพื่อให้มีพื้นที่สำหรับซอฟต์คีย์บอร์ดหรือเนื้อหา เลื่อนเพื่อแสดงโฟกัสปัจจุบันเมื่อบางส่วนของหน้าต่างถูกบัง แป้นพิมพ์เสมือน
การตั้งค่าต้องเป็นค่าใดค่าหนึ่งที่แสดงในตารางต่อไปนี้ หรือ ชุดค่าผสมของค่า
"state..."
หนึ่งค่า บวกหนึ่ง"adjust..."
การตั้งค่าหลายค่าในกลุ่มใดกลุ่มหนึ่ง เช่น หลายค่า ค่า"state..."
มีผลลัพธ์ที่ไม่ได้กำหนด ค่าแต่ละค่าจะคั่นด้วยแถบแนวตั้ง (|
) ดังที่แสดงในตัวอย่างต่อไปนี้<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >
ค่าที่ตั้งไว้ที่นี่ (นอกเหนือจาก
"stateUnspecified"
และ"adjustUnspecified"
) ลบล้างค่าที่ตั้งไว้ในธีมค่า คำอธิบาย "stateUnspecified"
แป้นพิมพ์เสมือนซ่อนอยู่หรือมองเห็นได้ ไม่ได้ระบุ เลือกรัฐที่เหมาะสม หรือ ขึ้นอยู่กับการตั้งค่าในธีม นี่เป็นการตั้งค่าเริ่มต้นสำหรับลักษณะการทำงานของแป้นพิมพ์เสมือน
"stateUnchanged"
แป้นพิมพ์เสมือนจะเก็บอยู่ในสถานะล่าสุด มองเห็นได้หรือซ่อนไว้ เมื่อมีกิจกรรมเกิดขึ้น "stateHidden"
แป้นพิมพ์เสมือนจะซ่อนอยู่เมื่อผู้ใช้เลือกกิจกรรมที่ เมื่อผู้ใช้ตอบรับที่จะนำทางไปยัง กิจกรรมอื่น แทนการสำรองข้อมูลขณะออกจากกิจกรรมอื่น "stateAlwaysHidden"
แป้นพิมพ์เสมือนจะซ่อนไว้เสมอเมื่อหน้าต่างหลักของกิจกรรม มีโฟกัสอินพุต "stateVisible"
แป้นพิมพ์เสมือนจะแสดงขึ้นเมื่อผู้ใช้เลือก ซึ่งก็คือเมื่อผู้ใช้ยืนยันว่าจะไปข้างหน้า ไปยังกิจกรรม แทนการย้อนกลับไปใช้เมื่อออกจากกิจกรรมอื่น กิจกรรม "stateAlwaysVisible"
แป้นพิมพ์เสมือนจะปรากฏขึ้นเมื่อหน้าต่างมีการโฟกัสการป้อนข้อมูล "adjustUnspecified"
ปรับขนาดหน้าต่างหลักของกิจกรรมหรือไม่ เพื่อให้มีพื้นที่สำหรับซอฟต์คีย์บอร์ดหรือเนื้อหา ของการเลื่อนหน้าต่างเพื่อทำให้โฟกัสปัจจุบันมองเห็นได้บนหน้าจอไม่ได้ระบุไว้ ระบบจะเลือกโหมดใดโหมดหนึ่งต่อไปนี้ให้โดยอัตโนมัติ ว่าเนื้อหาของหน้าต่างมีมุมมองเลย์เอาต์ ก็สามารถเลื่อนดูเนื้อหา หากมีมุมมองเช่นนี้ หน้าต่าง ปรับขนาดได้ โดยเข้าใจว่าการเลื่อนทำให้ ของเนื้อหาของหน้าต่างที่มองเห็นได้ภายในพื้นที่ที่เล็กกว่า ตัวเลือกนี้เป็นการตั้งค่าเริ่มต้นสำหรับลักษณะการทำงานของหน้าต่างหลัก
"adjustResize"
หน้าต่างหลักของกิจกรรมจะปรับขนาดอยู่เสมอเพื่อให้มีพื้นที่สำหรับ แป้นพิมพ์บนหน้าจอ "adjustPan"
หน้าต่างหลักของกิจกรรมไม่ได้ปรับขนาดเพื่อให้มีพื้นที่สำหรับการเคลื่อนไหว แป้นพิมพ์ แต่จะแสดงเนื้อหาในหน้าต่างโดยอัตโนมัติ เลื่อนเพื่อไม่ให้โฟกัสปัจจุบันบดบังด้วยแป้นพิมพ์ และผู้ใช้ก็สามารถเห็นได้ตลอดเวลาว่ากำลังพิมพ์อะไร โดยทั่วไปจะใช้เวลาน้อยกว่า ควรปรับปรุงมากกว่าการปรับขนาด เนื่องจากผู้ใช้อาจต้องปิดโฆษณา แป้นพิมพ์เพื่อตรวจจับและโต้ตอบกับส่วนที่ถูกบดบังของหน้าต่าง แอตทริบิวต์นี้เปิดตัวใน API ระดับ 3
- เปิดตัวใน
- API ระดับ 1 สำหรับแอตทริบิวต์ทั้งหมดยกเว้น
noHistory
และwindowSoftInputMode
ที่เพิ่มใน API ระดับ 3 - ดูเพิ่มเติม
<application>
<activity-alias>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2024-08-22 UTC
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"ไม่มีข้อมูลที่ฉันต้องการ"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"ล้าสมัย"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"ปัญหาเกี่ยวกับการแปล"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"อื่นๆ"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"เข้าใจง่าย"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"แก้ปัญหาของฉันได้"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"อื่นๆ"
}]
{
"last_modified": "อัปเดตล่าสุด 2024-08-22 UTC",
"state": ""
}