Android 1.5: Asynctask doInbackground () لا يسمى طريقة GET ()
-
21-09-2019 - |
سؤال
أنا أواجه مشكلة في الطريقة التي يتم بها تنفيذ المخططات المتزامنة الخاصة بي. إليك رمز المشكلة:
firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
secondTask = new background().new SecondTask(context);
}
ما أفعله هنا هو إنشاء كائن جديد من Asynctask ، وتعيينه إلى FirstTask ثم تنفيذه. بعد ذلك ، أرغب في إطلاق النار على مسجلة غير متصلة منفصلة عند الانتهاء من أول واحد والتأكد من إرجاع قيمة النجاح (1 في هذه الحالة). هذا يعمل بشكل مثالي على Android 2.0 وما فوق. ومع ذلك ، أنا أختبر مع Android 1.5 وتبدأ المشاكل في الظهور. سيتم تشغيل الكود أعلاه أول Asynctask لكن DoInbackground () لا يسمى أبدًا على الرغم من أن onpreexecute () يتم استدعاؤه. إذا كنت سأقوم بتنفيذ المهمة الأولى بدون طريقة GET () ، يتم استدعاء DoInbackground () ويعمل كل شيء كما هو متوقع. باستثناء الآن ، ليس لدي طريقة لتحديد ما إذا كانت المهمة الأولى قد تم الانتهاء منها بنجاح حتى أتمكن من إخبار المهمة الثانية بالتنفيذ. هل من الآمن افتراض أن هذا خطأ مع Asynctask على Android 1.5؟ خاصة منذ واجهة برمجة التطبيقات (https://developer.android.com/reference/android/os/asynctask.html#get٪28٪29) يقول أنه تم تنفيذ طريقة GET منذ API 3. هل هناك أي طريقة لإصلاح هذا؟ أو طريقة أخرى لتحديد أن المهمة الأولى قد انتهت؟
المحلول
إذا كنت ستحظر (عبر get()
) ، لماذا تهتم AsyncTask
في المقام الأول؟ بالكامل نقطة من AsyncTask
هو عدم الحظر.
إذا كنت تريد أن يكون SecondTask
تنفيذ متى FirstTask
انتهى ، لديك FirstTask
ينفذ SecondTask
في FirstTask
'س onPostExecute()
.