Xamarin.forms: [خطأ] تطبيق شل الخفقان على التنقل الخلفي

تم إنشاؤها على ٢٠ نوفمبر ٢٠١٩  ·  58تعليقات  ·  مصدر: xamarin/Xamarin.Forms

وصف

تومض الرسوم المتحركة للملاحة ، وتعرض لفترة وجيزة شاشة سوداء عند التنقل مرة أخرى في تطبيق شل.

خطوات التكاثر

العودة.

سلوك متوقع

لا تومض.

السلوك الفعلي

الخفقان.

معلومات اساسية

  • الإصدار مع المشكلة:
  • آخر إصدار جيد معروف:
  • IDE: VS 2019 16.3.9.1 تحديث
  • الأطر المستهدفة للمنصة:

    • iOS: غير متوفر

    • أندرويد: 9.0

    • UWP: غير متوفر

  • إصدار مكتبة دعم Android:
  • حزم نوجيت:
  • الأجهزة المتأثرة: Samsung Galaxy S8، S10

لقطات

فيديو بطيء الحركة للمشكلة: https://i.imgur.com/bWAVzgY.mp4

رابط الاستنساخ

shell 3 in-progress Android bug

التعليق الأكثر فائدة

لقد اختبرت nuget مع عينة xaminals

https://github.com/xamarin/Xamarin.Forms/issues/6294

ومع هذه الكتلة المعدنية لم يعد الخفقان يحدث

ال 58 كومينتر

حل مؤقت ، إذا قمت بتجاوز ، بدون الرسوم المتحركة لا يوجد وميض!

protected override bool OnBackButtonPressed() {Current.Navigation.PopAsync(false); return true;}

يا @ z07713! نشكرك على الإبلاغ وإضافة الفيديو بالإضافة إلى الحل! عمل رائع 😄

هل ستكون قادرًا بأي حال من الأحوال على وضع مشروع إعادة إنتاج صغير لاستبعاد أن سبب ذلك هو أي رمز آخر غير التنقل ببساطة؟

أيضًا ، هل جربت هذا على iOS ورأيت نفس الشيء؟ أو لم تجرب على iOS؟

شكر!

يا @ z07713! نشكرك على الإبلاغ وإضافة الفيديو بالإضافة إلى الحل! عمل رائع 😄

هل ستكون قادرًا بأي حال من الأحوال على وضع مشروع إعادة إنتاج صغير لاستبعاد أن سبب ذلك هو أي رمز آخر غير التنقل ببساطة؟

أيضًا ، هل جربت هذا على iOS ورأيت نفس الشيء؟ أو لم تجرب على iOS؟

شكر!

مرحبًا jfversluis ، شكرًا لك على الرد ، إليك الرد الذي طلبته: https://drive.google.com/open؟id=1WkGh6QwTOP380gX4RrRsksSGBoJNWeuc

أيضًا ، لم أجرب هذا على IOS ولا أملك القدرة على القيام بذلك ، فأنا لا أملك جهاز Mac.

رائع ، شكرًا @ z07713 !

بالتأكيد انظر إلى هذا يحدث ، شكرًا على التوبيخ.

قد يكون من الجدير بالذكر أن الحل
protected override bool OnBackButtonPressed() {Current.Navigation.PopAsync(false); return true;}
يعمل فقط عند تطبيقه داخل الكود الموجود خلف AppShell.xaml ولا يعمل عند وضعه في صفحات منفصلة. أعتقد أن هذا يتعلق بـ 7072

كقاعدة عمل ، قد يكون تجاوز OnPopAsync من ShellSection لتعطيل الرسوم المتحركة أكثر استهدافًا.

public class CustomShellSection : ShellSection
{
    protected override Task<Page> OnPopAsync(bool animated)
    {
        return base.OnPopAsync(false); // ignore the parameter
    }
}

jfversluis بالنسبة لي يبدو أن هذا يعمل بشكل صحيح على iOS (13.3).

لا يعد تعطيل الرسوم المتحركة خيارًا بالنسبة لنا وقد كنا ننهي إصدارنا للتو. سيتعين علينا التراجع إلى 4.3 وهو أمر سيء لأنه سيعيد فتح بعض الأخطاء في الغالب في shell و carousel.

من المحتمل أن نضطر إلى تعطيل بعض الميزات والإصدار بدونها وهو أمر محزن نظرًا لطول مدة عملنا عليها.

هل هناك أي حل بديل إلى جانب تعطيل الرسوم المتحركة؟

هل هناك فرصة لحل هذه المشكلة قبل 16 يناير؟ سيكون رائعا. شكر.

ملاحظة ، لا توجد مشكلة في الرسوم المتحركة PopModal.

آسف لسماع ذلك @ jonx. حتى لو أردنا إصلاحه قبل 16 يناير ، فمن غير المرجح أن يكون جزءًا من NuGet الذي أطلقناه قبل ذلك الحين. إذا كان هذا الأمر يمنع إطلاق سراحك ، فلن أراهن على هذا الخيار. اسف بشأن ذلك.

كل شيء على ما يرام jfversluis ، أفهم ، شكرًا لتعليقك. سيتعين علينا فقط تأخير إطلاق سراحنا.
@ z07713 هل هناك طريقة لمشاركة
jfversluis هل لديك فكرة عن التغيير في 4.4 الذي أدخل هذه المشكلة؟ أود معرفة ما إذا كانت هناك طريقة لحل المشكلة مؤقتًا. شكر.

لقد خفضت تصنيفي إلى 4.3.991250 وما زلت أواجه المشكلة بالفعل ، ولكن أقل وضوحًا (لأنها أسرع - أسرع ، على ما أعتقد) سأجري المزيد من الاختبارات إذا كان

jonx هناك تذهب: https://drive.google.com/open؟id=19apVlQS0TafFeBT16aCfzvtvCwcweVgS

أيضًا ، يحتوي على 4.3.0.991211 نماذج مثبتة: /

أنا أعاني من هذه المشكلة أيضا. لقد حاولت وضع الخط:
منطقي تجاوز محمي OnBackButtonPressed () {Current.Navigation.PopAsync (false) ؛ العودة صحيح }
في my appShell.xaml.cs وما زال اللمعان موجودًا. إذا كان بإمكان أحدهم مساعدتي في فهم العمل ... فسيكون ذلك رائعًا!

لدينا نفس المشكلة أيضًا ، إنه أمر مزعج للغاية ، إذا كنت تريد استخدام الغلاف مع الرسوم المتحركة. : |

لدي نفس المشكلة أيضًا ، كما أن الحل البديل لم ينجح معي. تلقيت تعليقات من المستخدمين مفادها أن هذا يبدو سيئًا للغاية ، لذلك سيتعين علينا تأخير طرح تطبيقنا حتى يتم إصلاح ذلك.

متى سيتم اصلاح الخطأ؟

أواجه نفس المشكلة في Windows UWP عند الانتقال إلى صفحة المحتوى باستخدام Navigation.PushAsyc(<Page Object>,false)

أي حل لذلك؟

jfversluis أي تحديث على هذا؟

@ z07713 لا أخشى بعد ، آسف! هل اكتشفت أي نتائج جديدة حول هذا بأي فرصة قد تساعدنا؟

لذا فإن فريق Xamarin يترك مشكلة الخفقان التي تدمر UX تمامًا في الريبو لعدة أشهر. هذا جنون بالنسبة لي. أواجه هذه المشكلة حاليًا وأنا نادم على عدم الانتقال إلى اللغة الأصلية لأنني أتلقى صداعًا أثناء التنقل في تطبيقي الخاص.

jfversluis لقد أجريت بعض الاختبارات ، آمل أن يساعدك هذا يا رفاق في اكتشاف الخطأ:

للاستنساخ ، استخدمت قالب Visual Studio القياسي الذي يستخدم أشكال Xamarin 4.3.0.908675
لم أقم بأي تغييرات على الكود. لا وميض في تطبيق النموذج القياسي.

بعد ذلك ، قمت بترقية حزمة Xamarin Forms إلى 4.3.0.947036
لا تغييرات على الكود. لا يظهر الخفقان في Emulator ، فقط على جهاز Android حقيقي (في حالتي Samsung Galaxy A40) ، كما أنه لا يظهر على iOS Simulator أو iPhone 8.

لذلك يجب أن يكون هناك تغيير بين هذين الإصدارين يسبب الخفقان.

رائع! تضمين التغريدة

jfversluis الشيء الوحيد الجدير بالذكر أننا توقفنا تمامًا عن استخدام shell بسبب هذا: /

شكرًا على تحقيقك في هذاAndreasLichtsinn! معلومات قيمة جدا :)

شيء آخر وجدته بخصوص مشكلة الوميض.
عندما أقوم بإنشاء تطبيق Shell باستخدام القالب ، إذا قمت بتغيير التنقل (في الكود الموجود خلف صفحة العناصر) من "Navigation.PushAsync (new ItemDetailPage ())" إلى "Shell.Current.GoToAsync (" itemDetailPage "، خطأ) "، ثم سأرى وميضًا على جهاز Android. لقد تحققت من هذا في الإصدار 4.3.xxx الأصلي وأحدث إصدارات 4.5.xxx من Xamarin.Forms.

لكي أكون صادقًا حقًا ، على الرغم من وجود بعض مشكلات التنقل في التنقل عبر Shell (مثل التنقل من صفحة إلى صفحة فقط ، وتمرير المعلمة وما إلى ذلك ...) ، فإن هذا الخطأ يحظر إصداري بالفعل ، وسيجعل Shell غير قابل للاستخدام تمامًا. لذا يرجى إصلاح الخلل في أسرع وقت ممكن !!!

صباح الخير لدي نفس المشاكل المذكورة أعلاه. أود أن أعرف ما إذا كان هناك حل يلوح في الأفق؟

نفس القضايا هنا. تعطيل الرسوم المتحركة التي لا أراها حقًا كحل ، خاصة أنه لا توجد طريقة سهلة للقيام بذلك باستخدام Back Button Pop.

آمل أن يتم إصلاح هذا بسرعة!

أستطيع أن أؤكد أنه لا يوجد وميض في الإصدار 4.3.0.90867.

لم تختبر الإصدار أعلاه ، ولكن المشكلة لا تزال قائمة في الإصدار 4.5.0.356

لا تزال المشكلة قائمة في آخر إصدار مستقر.

نفس القضايا هنا. تعطيل الرسوم المتحركة التي لا أراها حقًا كحل ، خاصة أنه لا توجد طريقة سهلة للقيام بذلك باستخدام Back Button Pop.

آمل أن يتم إصلاح هذا بسرعة!

kevinjpetersen لن يحدث هذا إلا إذا كنت قادرًا على إصلاحه في أسرع وقت ممكن. كان مفتوحا منذ منتصف نوفمبر العام الماضي.

افضل ما لديكم بسرعة! الإصلاح هو تجربة نتائج tdamir مع v 4.3.0.90867.

بعض المعلومات الإضافية: تم تقديم الخطأ في هذا الالتزام: https://github.com/xamarin/Xamarin.Forms/commit/2b4ccdc88f8db7a2a0b78a1adf3428125eb677b5

يبدو أنه إذا قمت بالتعليق خارج هذا السطر:
https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499
ثم لا يوجد وميض.

يمكن لشخص ما أن ينظر إلى هذا الذي لديه خبرة أكثر مني ...

لقد قمت بتصحيح هذا وإذا قمت بإزالة الصفحة أولاً ثم اتصلت بالتنقل ، فسيكون الأمر على ما يرام - بلا وميض.

حتى هنا: https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L600

غير هذا:

            _navigationRequested?.Invoke(this, args);
            if (args.Task != null)
                await args.Task;
            RemovePage(page);

الى هذا:

            RemovePage(page);
            _navigationRequested?.Invoke(this, args);
            if (args.Task != null)
                await args.Task;

@ tdamir تجد جيدة جدا!

إن إعطاء نتائجك دقيقة args.Task على الأرجح بسبب تبديل السياق من UI-Thread-UI.

المهمة منتظرة دائما

https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L302

على الرغم من أن args.Task في هذه الطريقة على نظام Android دائمًا ما يكون Task.FromResult(...)
https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L134
ولكن أعتقد أن العثور على الجاني الأكثر احتمالا
https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L252 -L259

إنه يغير لون الخلفية عند التنقل (لست متأكدًا دائمًا)! لماذا ا؟

يبدو أيضًا أن الوميض يحدث فقط عندما تكون داخل علامة تبويب.

يجب القيام بالكثير من الاختبارات.

عمل رائع @ tdamir وahmedalejo! :)

تضمين التغريدة أريد فقط أن أضع هذا هناك ، لا أعتقد أنه مجرد علامات تبويب. لدي نفس الوميض ، وكل ما لدي هو هذا في AppShell (المعروف أيضًا باسم no TabBar):

<?xml version="1.0" encoding="UTF-8"?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms" 
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
       xmlns:d="http://xamarin.com/schemas/2014/forms/design"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       xmlns:views="clr-namespace:MyApp.Views"
       mc:Ignorable="d"
       Title="MyApp"
       Visual="Material"
       Shell.BackgroundColor="{StaticResource JFBlack}"
       Shell.TitleColor="{StaticResource JFWhite}"
       Shell.ForegroundColor="{StaticResource JFWhite}"
       FlyoutBehavior="Disabled"
       Shell.TabBarIsVisible="False"
       x:Class="MyApp.AppShell">

    <ShellContent Route="login">
        <views:LoginPage />
    </ShellContent>
    <ShellContent Route="overview">
        <views:OverviewPage />
    </ShellContent>

</Shell>

ahmedalejo نعم ، جزء تغيير اللون غريب ولكن إذا قمت بإزالته ، فلا يزال يومض.

يبدو أنه يجب استدعاء https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499 قبل التنقل.

مرحبًا @ PureWeen و @ rmarinho

هل لديك فكرة عن سبب استدعاء SendAppearanceChange() أدناه
https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499

تسبب طرفة عين؟

هل يمكن لشخص ما تقديم المشورة بشأن الحل؟

الحل مع

protected override bool OnBackButtonPressed() 
{
  Current.Navigation.PopAsync(false); return true;
}

لا يعمل.

لقد وجدت الحل البديل (بفضل https://github.com/xamarin/Xamarin.Forms/issues/8581#issuecomment-569583965)

    public class CustomTab : Tab
    {
        protected override Task<Page> OnPopAsync(bool animated)
        {
            // temporary workaround while https://github.com/xamarin/Xamarin.Forms/issues/8581 not fixed
            return base.OnPopAsync(animated: false); 
        }
    }

ثم استخدم CustomTab في XAML.

يعمل الإصلاح أدناه فقط مع التنقل عبر الزر الخلفي للأجهزة (ولا يعمل في حالات التنقل الخلفية الأخرى):

protected override bool OnBackButtonPressed() 
{
  Current.Navigation.PopAsync(false); return true;
}

شكرًا pfedotovsky ، كان لدي حدس قد يكون له علاقة بالتنقل عبر علامة التبويب أيضًا.

يحدث لنا أيضًا ، منذ 4.3 كان الوميض موجودًا على Android.

اكتشفت للتو أن هذا الخطأ في الذكرى السنوية الأولى له على الملاحة [Shell] - الخفقان # 5755

نفس المشكلة هنا عندما goback ، شاشة الخفقان.

فمثلا:
https://github.com/mallibone/ShellLoginSample

شكرًا لك على الاستكشاف ahmedalejo ، فقد جعل هذا الأمر

https://github.com/xamarin/Xamarin.Forms/pull/10158

بمجرد الانتهاء من الإنشاء ، إذا أراد أي شخص اختبار القطع الصغيرة وإعلامي إذا تم حل المشكلة ، فسيكون ذلك مفيدًا

https://dev.azure.com/xamarin/public/_build/results؟buildId=16155&view=results

لقد اختبرت nuget مع عينة xaminals

https://github.com/xamarin/Xamarin.Forms/issues/6294

ومع هذه الكتلة المعدنية لم يعد الخفقان يحدث

PureWeen طيب لذلك قمت بإجراء اختبار:

لقد أنشأت تطبيق Shell Sample جديدًا باستخدام Xamarin Forms 4.3.0.908675 -> لا وميض
ثم قمت بالتحديث إلى أحدث إصدار 4.5.0.495 -> الخفقان
ثم قمت بالتحديث إلى أحدث إصدار لديك 4.6.0.1693 -> لا وميض

عمل عظيم! آمل أن يتمكن الآخرون من تأكيد ذلك.

PureWeen طيب لذلك قمت بإجراء اختبار:

لقد أنشأت تطبيق Shell Sample جديدًا باستخدام Xamarin Forms 4.3.0.908675 -> لا وميض
ثم قمت بالتحديث إلى أحدث إصدار 4.5.0.495 -> الخفقان
ثم قمت بالتحديث إلى أحدث إصدار لديك 4.6.0.1693 -> لا وميض

عمل عظيم! آمل أن يتمكن الآخرون من تأكيد ذلك.

AndreasLichtsinn لا يمكنه العثور على نماذج Xamarin 4.6.0.1693

PureWeen طيب لذلك قمت بإجراء اختبار:

لقد أنشأت تطبيق Shell Sample جديدًا باستخدام Xamarin Forms 4.3.0.908675 -> لا وميض
ثم قمت بالتحديث إلى أحدث إصدار 4.5.0.495 -> الخفقان
ثم قمت بالتحديث إلى أحدث إصدار لديك 4.6.0.1693 -> لا وميض

عمل عظيم! آمل أن يتمكن الآخرون من تأكيد ذلك.

AndreasLichtsinn لا يمكنني العثور على بناء 1693 أيضًا! أيضًا ، الوميض الثابت 4.7.0.531 ليلا: /

angelruRsZoli وفي القطع الأثرية نشرت أن PureWeen نشر
image

angelru شكرا للاختبار !!!!

angelru شكرا للاختبار !!!!

PureWeen لم أستطع الاختبار ، لا يمكنني التنزيل

أوه كنت نقلا عن AndreasLichtsinn :-)

شكرا AndreasLichtsinn للاختبار !!!

تضمين التغريدة
انتقل إلى الارتباط:
https://dev.azure.com/xamarin/public/_build/results؟buildId=16155&view=results
انقر هنا:
image
ثم هنا:
image
ثم قم بفك ضغط الملف المضغوط وأنشئ مصدر حزمة nuget محلي لهذا المجلد:
image
ثم اختر مصدر الحزمة المحلي هذا وقم بتثبيته من هناك:
image

تضمين التغريدة
انتقل إلى الارتباط:
https://dev.azure.com/xamarin/public/_build/results؟buildId=16155&view=results
انقر هنا:
image
ثم هنا:
image
ثم قم بفك ضغط الملف المضغوط وأنشئ مصدر حزمة nuget محلي لهذا المجلد:
image
ثم اختر مصدر الحزمة المحلي هذا وقم بتثبيته من هناك:
image

شكرا جزيلا!!! إنها تعمل!

أستطيع أن أؤكد أنه لا يوجد وميض في أشكال Xamarin 4.6.0.1693.

شكر!

مغلق بواسطة # 10158

لدي نفس المشكلة مع أحدث نماذج Xamarin 4.8. لقد حددت أن الصفحات التي تحتوي على تسميات TextType = 'Html' على نظام iOS تسبب المشكلة ...

لقد فتحت عددًا جديدًا. # 12385

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات