فئة السائقين لاستنتاج استنتاج النماذج من خلال TensorFlow Lite
ملاحظة: إذا لم تكن بحاجة إلى الوصول إلى أي من الميزات "التجريبية" لواجهة برمجة التطبيقات الواردة أدناه، ننصحك باستخدام ترجمات intererApi والترجمة الفورية بدلاً من استخدام ميزة "الترجمة الفورية" مباشرةً.
تحتوي السمة Interpreter
على نموذج TensorFlow Lite الذي تم تدريبه مسبقًا، ويتم فيه تنفيذ عمليات لاستنتاج النموذج.
على سبيل المثال، إذا كان أحد النماذج يأخذ إدخالاً واحدًا فقط ويعرض ناتجًا واحدًا فقط:
try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
interpreter.run(input, output);
}
إذا أخذ النموذج عدة مدخلات أو مخرجات:
Object[] inputs = {input0, input1, ...};
Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();
FloatBuffer ith_output = FloatBuffer.allocateDirect(3 * 2 * 4); // Float tensor, shape 3x2x4.
ith_output.order(ByteOrder.nativeOrder());
map_of_indices_to_outputs.put(i, ith_output);
try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
}
إذا أخذ النموذج متوترات سلاسل أو إنتاجه:
String[] input = {"foo", "bar"}; // Input tensor shape is [2].
String[][] output = new String[3][2]; // Output tensor shape is [3, 2].
try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
interpreter.runForMultipleInputsOutputs(input, output);
}
لاحظ أن هناك فرقًا بين الشكل [] والشكل[1]. بالنسبة إلى مخرجات مترابط السلسلة العددي:
String[] input = {"foo"}; // Input tensor shape is [1].
ByteBuffer outputBuffer = ByteBuffer.allocate(OUTPUT_BYTES_SIZE); // Output tensor shape is [].
try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
interpreter.runForMultipleInputsOutputs(input, outputBuffer);
}
byte[] outputBytes = new byte[outputBuffer.remaining()];
outputBuffer.get(outputBytes);
// Below, the `charset` can be StandardCharsets.UTF_8.
String output = new String(outputBytes, charset);
يتم تحديد ترتيب المدخلات والمخرجات عند تحويل نموذج TensorFlow إلى نموذج TensorFlowLite مع Toco، كما هو الحال مع الأشكال التلقائية للمدخلات.
عند تقديم الإدخالات على شكل صفائف (متعددة الأبعاد)، سيتم بشكلٍ ضمني تغيير حجم موصّلات الإدخال المقابل وفقًا لشكل تلك المصفوفة. عند تقديم الإدخالات على شكل أنواع Buffer
،
لا يتم تغيير الحجم الضمني، لذا يجب أن يتأكّد المتصل من أنّ حجم Buffer
بايت إما يتطابق مع حجم الموتر المقابل، أو أنّه سيغيّر أولاً حجم الموصّل من خلال resizeInput(int, int[])
. يمكن الحصول على معلومات شكل ونوع الموتّر من خلال الفئة Tensor
المتاحة من خلال getInputTensor(int)
وgetOutputTensor(int)
.
تحذير:Interpreter
أمثلة غير مرتبطة بسلاسل المحادثات. يملك Interpreter
الموارد التي يجب تحريرها صراحةً من خلال استدعاء close()
.
تم تصميم مكتبة TFLite مقارنةً بالإصدار 19 من واجهة NDK API. يمكن أن تعمل هذه الميزة مع مستويات واجهة برمجة تطبيقات Android التي تقلّ عن 19 عامًا، ولكنّها غير مضمونة.
الصفوف المتداخلة
صنف | Interpreter.Options | فئة خيارات للتحكّم في سلوك المترجم الفوري في وقت التشغيل |
الإنشاء العام
الترجمة الفورية(نموذج ملف، خيارات Interpreter.Options)
تعمل هذه السياسة على إعداد
Interpreter وتحديد الخيارات لتخصيص سلوك ميزة "الترجمة الفورية". |
|
مترجم(خيارات ByteBuffer byteBuffer، خيارات Interpreter.Options)
تعمل هذه السياسة على إعداد
Interpreter باستخدام ByteBuffer لملف نموذج ومجموعة من Interpreter.Options المخصّصة. |
الطرق العامة
void |
allocateTensors()
تحدّث التوزيعات بشكل صريح لجميع الموترات، إذا لزم الأمر.
|
void |
Close()
إلغاء حجز الموارد المرتبطة بالمثيل
InterpreterApi |
int | |
جهاز استشعار |
getInputTensor(int enterIndex)
للحصول على Tensor المرتبط بفهرس الإدخال المقدم.
|
int |
getInputTensorCount()
للحصول على عدد موترات الإدخال.
|
جهاز استشعار |
getInputTensorFromSignature(String conversionName, String signatureKey)
للحصول على Tensor المرتبط باسم الإدخال واسم طريقة التوقيع
|
طويل |
getLastNativeInferenceDurationNanoseconds()
تعرض توقيت الاستنتاج الأصلي.
|
int | |
جهاز استشعار |
getOutputTensor(int generateIndex)
للحصول على Tensor المرتبط بفهرس الإخراج المقدم.
|
int |
getOutputTensorCount()
للحصول على عدد موجات المخرجات.
|
جهاز استشعار |
getOutputTensorFromSignature(سلسلة الاعتماد outName ومفتاح توقيع سلسلة)
لإحضار Tensor المرتبط باسم الإخراج المقدم في طريقة توقيع محددة.
|
سلسلة[] | |
سلسلة[] |
getSignatureKeys()
للحصول على قائمة بأسماء طرق SignatureDef التي تم تصديرها والمتاحة في النموذج.
|
سلسلة[] |
getSignatureOutputs(String signatureKey)
للحصول على قائمة مخرجات SignatureDefs للطريقة
signatureKey . |
void |
resetVariableTensors()
متقدم: إعادة ضبط جميع المتغيّرات المتغيرة إلى القيمة التلقائية.
|
void |
resizeInput(int idx, int[] dims, boolean strict)
لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.
|
void |
resizeInput(int idx, int[] Dis)
لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.
|
void | |
void |
runForMultipleInputsOutputs(إدخالات Object[]، ومخرجات خريطة<عدد صحيح، ومخرجات كائن>)
يتم تشغيل استنتاج النموذج إذا أخذ النموذج مدخلات متعددة أو يعرض مخرجات متعددة.
|
void | |
void | |
void |
setCancelled(تم إلغاء القيم المنطقية)
متقدِّم: يقاطع الاستنتاج في منتصف المكالمة إلى
run(Object, Object) . |
الطرق المكتسَبة
الإنشاء العام
علني مترجم (ملف نموذجملف)
يؤدي هذا الإعداد إلى إعداد Interpreter
.
المَعلمات
modelFile | ملف نموذج TF Lite المدرَّب مسبقًا. |
---|
الرميات
IllegalArgumentException | إذا لم يتم ترميز نموذج TensorFlow Lite
للترميز modelFile .
|
---|
علني مترجم (نموذج ملف، Interpreter.Options)
تعمل هذه السياسة على إعداد Interpreter
وتحديد الخيارات لتخصيص سلوك ميزة "الترجمة الفورية".
المَعلمات
modelFile | ملف لنموذج TF Lite المدرَّب مسبقًا |
---|---|
الخيارات | مجموعة من الخيارات لتخصيص سلوك المترجم |
الرميات
IllegalArgumentException | إذا لم يتم ترميز نموذج TensorFlow Lite
للترميز modelFile .
|
---|
public مترجم (ByteBuffer byteBuffer)
يتم إعداد Interpreter
مع ByteBuffer
من ملف النموذج.
يجب عدم تعديل ByteBuffer بعد إنشاء Interpreter
. يمكن أن تكون السمة ByteBuffer
إما MappedByteBuffer
يضبط الذاكرة على ملف نموذج أو نوع ByteBuffer
مباشر من الدالةNativeOrder() والتي تحتوي على محتوى وحدات البايت الخاصة بنموذج.
المَعلمات
byteBuffer |
---|
الرميات
IllegalArgumentException | إذا لم يكن byteBuffer MappedByteBuffer أو ByteBuffer مباشرًا من الأصليOrder.
|
---|
public مترجم (خيارات ByteBuffer byteBuffer، Interpreter.Options)
تعمل هذه السياسة على إعداد Interpreter
باستخدام ByteBuffer
لملف نموذج ومجموعة من Interpreter.Options
المخصّصة.
يجب عدم تعديل ByteBuffer
بعد إنشاء Interpreter
. يمكن أن تكون السمة ByteBuffer
إما MappedByteBuffer
يضبط فيها الذاكرة
ملف نموذج أو ByteBuffer
مباشر للقيم الأصليةOrder() يحتوي على محتوى البايت الخاص بنموذج.
المَعلمات
byteBuffer | |
---|---|
الخيارات |
الرميات
IllegalArgumentException | إذا لم يكن byteBuffer MappedByteBuffer أو ByteBuffer مباشرًا من الأصليOrder.
|
---|
الطرق العامة
public إبطال allocateTensors ()
تحدّث التوزيعات بشكل صريح لجميع الموترات، إذا لزم الأمر.
سيؤدي هذا إلى نشر الأشكال وعمليات تخصيص الذاكرة للموترات التابعة باستخدام أشكال موصّل الإدخال كما هو موضَّح.
ملاحظة: هذه المكالمة *اختيارية تمامًا*. يتم تخصيص الموتّر تلقائيًا أثناء التنفيذ في حال تغيير حجم أي أواني إدخال. يساعد هذا الطلب بشكل كبير في تحديد الأشكال لأي موتر إخراج قبل تنفيذ الرسم البياني، مثل
interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
interpreter.allocateTensors();
FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
// Populate inputs...
FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
interpreter.run(input, output)
// Process outputs...
ملاحظة: تحتوي بعض الرسومات البيانية على مخرجات ذات شكل ديناميكي، وفي هذه الحالة قد لا يتم نشر شكل الناتج بالكامل إلى أن يتم تنفيذ الاستنتاج.
عامة باطل إغلاق ()
إلغاء حجز الموارد المرتبطة بالمثيل InterpreterApi
public int getInputIndex (سلسلة opName)
للحصول على فهرس لمدخل يحدد اسم العملية للمدخل.
المَعلمات
opName |
---|
public Tensor getInputTensor (int enterIndex)
للحصول على Tensor المرتبط بفهرس الإدخال المقدم.
المَعلمات
inputIndex |
---|
public int getInputTensorCount ()
للحصول على عدد موترات الإدخال.
public Tensor getInputTensorFromSignature (String integrationName, String signatureKey)
للحصول على Tensor المرتبط باسم الإدخال واسم طريقة التوقيع
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
inputName | أدخل الاسم في التوقيع. |
---|---|
signatureKey | يمكن أن يكون مفتاح التوقيع الذي يحدّد SignatureDef فارغًا إذا كان النموذج يحتوي على توقيع واحد. |
الرميات
IllegalArgumentException | إذا كان inputName أو signatureKey فارغًا أو فارغًا،
أو تم تقديم اسم غير صالح.
|
---|
public int getOutputIndex (سلسلة opName)
للحصول على فهرس مُخرج وفقًا لاسم عملية للمخرجات.
المَعلمات
opName |
---|
Public Tensor getOutputTensor (int تعليمات برمجية)
للحصول على Tensor المرتبط بفهرس الإخراج المقدم.
ملاحظة: قد لا تتم تعبئة تفاصيل موصّل الإخراج (مثل الشكل) بالكامل إلا بعد تنفيذ الاستنتاج. إذا كنت بحاجة إلى تعديل تفاصيل *قبل* تنفيذ الاستنتاج (على سبيل المثال، بعد تغيير حجم
موتّر الإدخال، ما قد يؤدي إلى إلغاء صلاحية أشكال مجسّم الإخراج)، استخدِم allocateTensors()
لتشغيل التخصيص ونشر الأشكال بشكل صريح. بالنسبة إلى الرسوم البيانية التي تتضمّن أشكال الإخراج التي تعتمد على *قيم* الإدخال، قد لا يتم تحديد شكل الناتج بالكامل إلى أن يتم
تنفيذ الاستنتاج.
المَعلمات
outputIndex |
---|
public int getOutputTensorCount ()
للحصول على عدد موجات المخرجات.
public Tensor getOutputTensorFromSignature (سلسلة}switchName, سلسلة مفتاح التوقيع)
لإحضار Tensor المرتبط باسم الإخراج المقدم في طريقة توقيع محددة.
ملاحظة: قد لا تتم تعبئة تفاصيل موصّل الإخراج (مثل الشكل) بالكامل إلا بعد تنفيذ الاستنتاج. إذا كنت بحاجة إلى تعديل تفاصيل *قبل* تنفيذ الاستنتاج (على سبيل المثال، بعد تغيير حجم
موتّر الإدخال، ما قد يؤدي إلى إلغاء صلاحية أشكال مجسّم الإخراج)، استخدِم allocateTensors()
لتشغيل التخصيص ونشر الأشكال بشكل صريح. بالنسبة إلى الرسوم البيانية التي تتضمّن أشكال الإخراج التي تعتمد على *قيم* الإدخال، قد لا يتم تحديد شكل الناتج بالكامل إلى أن يتم
تنفيذ الاستنتاج.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
outputName | اسم الإخراج في التوقيع |
---|---|
signatureKey | يمكن أن يكون مفتاح التوقيع الذي يحدّد SignatureDef فارغًا إذا كان النموذج يحتوي على توقيع واحد. |
الرميات
IllegalArgumentException | إذا كان الحقل outputName أو signatureKey فارغًا
أو فارغًا، أو إذا تم تقديم اسم غير صالح.
|
---|
public String[] getSignatureInputs (String signatureKey)
للحصول على قائمة مدخلات SignatureDefs للطريقة signatureKey
.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
signatureKey |
---|
public String[] getSignatureKeys ()
للحصول على قائمة بأسماء طرق SignatureDef التي تم تصديرها والمتاحة في النموذج.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
public سلسلة[] getSignatureOutputs (سلسلة signatureKey)
للحصول على قائمة مخرجات SignatureDefs للطريقة signatureKey
.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
signatureKey |
---|
متاح للجميع إلغاء resetVariableTensors ()
متقدم: إعادة ضبط جميع المتغيّرات المتغيرة إلى القيمة التلقائية.
إذا لم يكن للمتوتر المتغير مخزن مؤقت مرتبط، ستتم إعادة ضبطه على صفر.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
public إبطال resizeInput (int idx, int[] dims, boolean strict)
لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.
عندما تكون قيمة "strict" صحيحة، لا يمكن تغيير حجم سوى الأبعاد غير المعروفة فقط. تتم الإشارة إلى الأبعاد غير المعروفة على أنّها "-1" في الصفيف الذي يعرضه "Tensor.shapeSignature() ".
المَعلمات
idx | |
---|---|
dims | |
متشدّد |
public إبطال resizeInput (int idx, int[] Dis)
لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.
المَعلمات
idx | |
---|---|
dims |
علني إلغاء run (إدخال كائن، إخراج كائن)
يتم تشغيل استنتاج نموذج إذا كان النموذج يأخذ إدخالاً واحدًا فقط ويقدّم ناتجًا واحدًا فقط.
تحذير: تكون واجهة برمجة التطبيقات أكثر فعالية إذا تم استخدام Buffer
(يُفضَّل أن تكون مباشرة، ولكنها غير مطلوبة) كنوع بيانات الإدخال/الإخراج. ننصحك باستخدام السمة Buffer
لخلاصة
البيانات الأساسية واسترجاعها لتحقيق أداء أفضل. يُسمح باستخدام أنواع Buffer
الملموسة التالية:
ByteBuffer
: متوافق مع أي نوع Tensor أساسي أساسي.FloatBuffer
: متوافقة مع أجهزة Tensor العائمة.- "
IntBuffer
" متوافق مع أجهزة int32 Tensors. LongBuffer
: متوافق مع أجهزة int64 Tensors
Buffer
كمدخلات عددية.المَعلمات
مصدر الإدخال | مصفوفة أو مصفوفة متعددة الأبعاد، أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح، وعدد عشري، وطويل، وبايت. إنّ العلامة Buffer هي الطريقة المفضّلة لتمرير بيانات إدخال كبيرة
للأنواع الأساسية، في حين تتطلب أنواع السلاسل استخدام مسار إدخال المصفوفة (متعددة الأبعاد). عند استخدام Buffer ، يجب أن يبقى محتواه بدون تغيير إلى أن يتم استنتاج النموذج، ويجب أن يتأكّد المتصل من ضبط Buffer في موضع القراءة المناسب. غير مسموح بالقيمة null إلا إذا كان المتصل يستخدم Delegate يتيح إمكانية التشغيل التفاعلي لمقبض المخزن المؤقت، وتم ربط هذا المخزن المؤقت بالإدخال Tensor . |
---|---|
الإنتاج | مصفوفة متعددة الأبعاد من بيانات المخرجات أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح وعدد عشري وطويل وبايت. عند استخدام Buffer ، يجب أن يتأكّد المتصل من ضبطه على موضع الكتابة المناسب. ويُسمح باستخدام قيمة فارغة وهي مفيدة في حالات معيّنة، على سبيل المثال إذا كان المتصل يستخدم Delegate يتيح إمكانية التشغيل التفاعلي للمخزن المؤقت، وتم ربط هذا المخزن المؤقت بالمخرجات Tensor (راجِع أيضًا Interpreter.Options#setAllowBufferHandleOutput(boolean))،
أو إذا كان الرسم البياني يستخدم مخرجات على شكل أشكال بشكل ديناميكي، ويجب أن يحصل المتصل على مخرجات بشكل ديناميكي من خلال Tensor .Tensor.asReadOnlyBuffer() |
عامة إلغاء runForMultipleInputsOutputs (إدخالات Object[]، خريطة<عدد صحيح، كائن> مخرجات)
يتم تشغيل استنتاج النموذج إذا أخذ النموذج مدخلات متعددة أو يعرض مخرجات متعددة.
تحذير: تكون واجهة برمجة التطبيقات أكثر فعالية في حال استخدام Buffer
(يُفضَّل أن تكون مباشرة، ولكنها غير مطلوبة)
كأنواع بيانات الإدخال/الإخراج. ننصحك باستخدام السمة Buffer
لخلاصة
البيانات الأساسية واسترجاعها لتحقيق أداء أفضل. يُسمح باستخدام أنواع Buffer
الملموسة التالية:
ByteBuffer
: متوافق مع أي نوع Tensor أساسي أساسي.FloatBuffer
: متوافقة مع أجهزة Tensor العائمة.- "
IntBuffer
" متوافق مع أجهزة int32 Tensors. LongBuffer
: متوافق مع أجهزة int64 Tensors
Buffer
كمدخلات عددية.
ملاحظة: لا يُسمح بالقيم null
للعناصر غير المرئية
في الترميزَين inputs
وoutputs
إلا إذا كان المتصل يستخدم Delegate
يسمح بإمكانية التشغيل التفاعلي لمقبض المخزن المؤقت،
وتم ربط هذا المخزن المؤقت بالمدخلات أو الإخراج المقابلة Tensor
.
المَعلمات
المدخلات | صفيفة من بيانات الإدخال. يجب أن تكون المدخلات بنفس ترتيب مدخلات النموذج. يمكن أن يكون كل إدخال مصفوفة أو مصفوفة متعددة الأبعاد، أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح وعدد عشري وطويل وبايت. إنّ Buffer هي الطريقة المفضّلة
لتمرير بيانات إدخال كبيرة، في حين تتطلب أنواع السلاسل استخدام مسار إدخال المصفوفة (متعددة الأبعاد). عند استخدام السمة Buffer ، يجب أن يبقى المحتوى بدون تغيير إلى أن يتم استنتاج النموذج، ويجب أن يتأكّد المتصل من ضبط Buffer في موضع القراءة المناسب. |
---|---|
المخرجات | مؤشرات ناتج تعيين الخريطة إلى مصفوفات متعدّدة الأبعاد من البيانات الناتجة أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح وعدد عشري وطويل وبايت. وتحتاج فقط إلى الاحتفاظ
بالإدخالات حتى يتم استخدام المخرجات. عند استخدام Buffer ، يجب أن يتأكّد المتصل من ضبطه على موضع الكتابة المناسب. قد تكون الخريطة فارغة في الحالات التي يتم فيها استخدام مقابض المخزن المؤقت مع بيانات منظّم الإخراج، أو الحالات التي يتم فيها تشكيل المخرجات ديناميكيًا
ويجب على المتصل الاستعلام عن شكل Tensor الناتج بعد استدعاء الاستنتاج،
واسترجاع البيانات مباشرةً من موصّل الإخراج (عبر Tensor.asReadOnlyBuffer() ). |
public إبطال runSignature (مخرجات خريطة<سلسلة و Object> وخريطة<سلسلة و Object> مخرجات)
تشبه السمة runSignature(Map, Map, String)
ولكنها لا تتطلّب تمرير مفتاح توقيع،
بافتراض أنّ النموذج يحتوي على SignatureDef واحد. إذا كان النموذج يحتوي على أكثر من SignatureDef واحد، سيتم
إنشاء استثناء.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
المدخلات | |
---|---|
المخرجات |
عامة إبطال runSignature (خريطة<سلسلة, كائن> المدخلات، خريطة<سلسلة، كائن>، مخرجات سلسلة مفتاح التوقيع)
يتم تشغيل استنتاج نموذج استنادًا إلى SignatureDef المقدَّم من خلال signatureKey
.
اطّلِع على run(Object, Object)
لمعرفة مزيد من التفاصيل حول أنواع بيانات الإدخال والمخرجات المسموح بها.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
المدخلات | تحديد من اسم الإدخال في SignatureDef إلى كائن إدخال. |
---|---|
المخرجات | خريطة من اسم الإخراج في SignatureDef إلى بيانات الإخراج. قد يكون هذا الحقل فارغًا إذا أراد المتصل الاستعلام عن بيانات Tensor مباشرةً بعد الاستنتاج (مثلاً، إذا كان شكل الإخراج ديناميكيًا أو تم استخدام مؤشرات المخزن المؤقت للمخرجات). |
signatureKey | مفتاح التوقيع الذي يحدِّد SignatureDef. |
الرميات
IllegalArgumentException | إذا كانت السمة inputs فارغة أو فارغة، أو إذا كانت السمة outputs أو
signatureKey فارغة، أو إذا حدث خطأ عند تنفيذ الاستنتاج.
|
---|
متاح للجميع إبطال setCancelled (boolean cancelled)
متقدِّم: يقاطع الاستنتاج في منتصف المكالمة إلى run(Object, Object)
.
سيتم ضبط علامة الإلغاء على "صحيح" عند استدعاء هذه الدالة. سيتحقّق الترجمة الفورية من العلامة بين استدعاءات عمليات التشغيل، وإذا كانت هي true
، سيتوقّف المترجم الفوري عن التنفيذ. ستظل خدمة الترجمة الفورية ملغية إلى أن يتم "إلغاء الإلغاء" صراحةً بحلول
setCancelled(false)
.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المَعلمات
تم الإلغاء. | true لإلغاء الاستنتاج بأفضل جهد، وfalse للاستئناف. |
---|
الرميات
IllegalStateException | في حال عدم إعداد ميزة "الترجمة الفورية" مع الخيار القابل للإلغاء، والذي يكون غير مفعّل تلقائيًا. |
---|