InvocationLocal

public class InvocationLocal
extends Object

java.lang.Object
   ↳ com.android.tradefed.invoker.logger.InvocationLocal<T>


คลาสนี้มีตัวแปรระดับการเรียกใช้

กลไกนี้ทำงานคล้ายกับ ThreadLocal ตัวแปรเหล่านี้แตกต่างจากตัวแปรทั่วไปตรงที่โค้ดในการเรียกใช้ที่เข้าถึงตัวแปรหนึ่ง (ผ่านเมธอด get) จะมีสำเนาของตัวแปรที่เริ่มต้นขึ้นเอง InvocationLocal อินสแตนซ์มักเป็นฟิลด์คงที่ส่วนตัวในคลาสที่ต้องการเชื่อมโยงสถานะกับการเรียกใช้

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

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

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

สรุป

ตัวสร้างแบบสาธารณะ

InvocationLocal()

เมธอดสาธารณะ

final T get()

แสดงสำเนาของตัวแปรระดับการเรียกใช้นี้ของการเรียกใช้ที่ดำเนินการอยู่ในปัจจุบัน

วิธีการที่มีการป้องกัน

T initialValue()

แสดง "ค่าเริ่มต้น" ของการเรียกใช้ปัจจุบันสําหรับตัวแปรภายในการเรียกใช้นี้

ช่างก่อสร้างสาธารณะ

InvocationLocal

public InvocationLocal ()

เมธอดสาธารณะ

รับ

public final T get ()

แสดงสำเนาของตัวแปรระดับการเรียกใช้นี้ของการเรียกใช้ที่ดำเนินการอยู่ในปัจจุบัน หากตัวแปรไม่มีค่าสําหรับการเรียกใช้ปัจจุบัน ระบบจะเริ่มต้นตัวแปรเป็นค่าที่แสดงผลจากการเรียกใช้เมธอด initialValue() ก่อน

คิกรีเทิร์น
T สำเนาของ invocation-local ของการเรียกใช้ที่ดำเนินการอยู่ในปัจจุบัน

วิธีการป้องกัน

initialValue

protected T initialValue ()

แสดง "ค่าเริ่มต้น" ของการเรียกใช้ปัจจุบันสําหรับตัวแปรภายในการเรียกใช้นี้ ระบบจะเรียกใช้เมธอดนี้เมื่อโค้ดที่ดำเนินการในบริบทของการเรียกใช้เข้าถึงตัวแปรด้วยเมธอด get() เป็นครั้งแรก เราจะเรียกใช้เมธอดนี้ไม่เกิน 1 ครั้งต่อการเรียกใช้

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

คิกรีเทิร์น
T ค่าเริ่มต้นของตัวแปรระดับการเรียกใช้นี้