Xamarin.forms: iOS:ContextActionコレクションの変更により、速度が低下し、最終的にフリーズします

作成日 2018年03月12日  ·  3コメント  ·  ソース: xamarin/Xamarin.Forms

説明

ListViewまたはTableViewのContextActionsを変更するたびに、iOSでUIのフリーズが指数関数的に増加します。

再現する手順

  1. コンテキストアクションを使用してViewCellを作成する
  2. 何らかの方法でコンテキストアクションを繰り返し変更します(通常はViewCell / ViewModelの状態に基づいて)

予想される行動

コンテキストメニュー(iOSでは左にスワイプ、Androidでは長押し、UWPで右クリックなど)は、UIの速度を低下させることなく、この変更をすぐに反映する必要があります。

実際の動作

iOSでは、変更のたびに、UIの応答が遅くなり、最終的には無期限にフリーズします。

基本情報

  • 問題のあるバージョン:2.5.0.280555
  • IDE:Visual Studio 2017
  • プラットフォームターゲットフレームワーク:

    • iOS:11.8.0.20

  • デバイス:iPhone 6Plusでテスト済み

ビデオ

https://github.com/sonic1015/bugRepo/files/1835039/2018-03-12.T16-17-07.zip

複製リンク

https://github.com/sonic1015/bugRepo/archive/1.zip

listview performance 4 help wanted high iOS 🍎 bug up-for-grabs

全てのコメント3件

こんにちは、

私もこれとまったく同じ問題に直面しています、あなたが実際にこれをいつ拾うのだろうと思っていました

この問題は、長い間何の活動もなかったようです。 私たちは問題に優先順位を付け、できるだけ早く解決するよう取り組んでいます。 リストを確認できるように、最新バージョンのXamarin.Formsで引き続き影響があるかどうかをお知らせいただくために、更新をお願いします。これは、別の関連または重複の一部として解決された可能性があるためです。問題。 今後30日以内にこの問題に関する新しいアクティビティが見られない場合は、この問題を解決する必要があるかどうかを評価します。 ありがとうございました!

複製をXamarin.Formsv4.6.0.867に更新しました

最初のメニュー項目の変更後、メニューを閉じるアニメーションはありません。 メニュー項目を約7回変更すると、次の例外を除いてクラッシュします。

System.NullReferenceException: Object reference not set to an instance of an object
  at Xamarin.Forms.Platform.iOS.ContextActionsCell.OnCellPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x00012] in D:\a\1\s\Xamarin.Forms.Platform.iOS\ContextActionCell.cs:475 
  at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs(object,System.ComponentModel.PropertyChangedEventArgs)
  at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:229 
  at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:353 
  at Xamarin.Forms.Cell.OnContextActionsChanged (System.Object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x0002d] in D:\a\1\s\Xamarin.Forms.Core\Cells\Cell.cs:227 
  at (wrapper delegate-invoke) <Module>.invoke_void_object_NotifyCollectionChangedEventArgs(object,System.Collections.Specialized.NotifyCollectionChangedEventArgs)
  at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00018] in <866ebc6712e548788bfc4c085907ae80>:0 
  at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedAction action, System.Object item, System.Int32 index) [0x00009] in <866ebc6712e548788bfc4c085907ae80>:0 
  at System.Collections.ObjectModel.ObservableCollection`1[T].RemoveItem (System.Int32 index) [0x00021] in <866ebc6712e548788bfc4c085907ae80>:0 
  at System.Collections.ObjectModel.Collection`1[T].Remove (T item) [0x00027] in <624bcc4ce53347508a7b8fa821d78da4>:0 
  at bugRepo.CustomViewCell+<>c__DisplayClass0_0.<.ctor>b__1 (System.Object sender, System.EventArgs args) [0x00002] in C:\Users\eballantyne\Downloads\bugRepo-1\bugRepo-1\bugRepo\bugRepo\CustomViewCell.xaml.cs:40 

iPhone 8、iOS13.4.1でテスト済み。 AndroidまたはUWPでテストしていません。

このページは役に立ちましたか?
0 / 5 - 0 評価