Olaylar ana iş parçacığında yüklenir ve çalıştırılır, ana iş parçacığındaki ilk olay bitmediyse, ana iş parçacığındaki diğer programlar gibi, ana iş parçacığında bir sonraki veya başka bir programı veya etkinliği işlemeden önce önceki olayın işlemesini beklersiniz.
Yukarıdaki durum, bir nesneyi kendim kapsülledim ve nesneye bir olayı kendim kapsülledim.
Verileri etkinliklere abone olma yönteminde işlerim, örneğin görsel açıklama kısmı,
Çünkü abone olduğum etkinlik okunan bir txt dosyasıydı ve txt dosyamda 50.000 satır vardı, bu da olay yönteminin 50.000 kez tetiklenmesine neden oluyordu.
Sonra programı çalıştırdığımda, arayüzümün askıya alınmış bir animasyon halinde olduğunu fark ettim ve orada bir sorun olmalıydı.
Başta sahte ölüme neden olan yöntemin arayüz kontrollerinin manipülasyonu olduğunu düşündüm.
Sonra, adım adım, seye veri eklendiğinde, askıya alınmış bir animasyon durumuna girmiş olduğu tespit edildi.
Neden??? Son olarak, internetten öğrendim ki olay ana başlıkta yer alıyor ve ilk olay işlemezse, bir sonraki etkinliğin yürütülmesini engelliyor,
Genel olarak ne sipariş ettiğimi anlıyordum, açıkçası, 50.000 olay programın engellenmesine neden oldu ve sonra askıya alınmış bir animasyon haline girdim.
Çözüm:
Bazı basit olaylar için, çok sayıda olay yönteminin yürütülmesine yol açmayacak ve doğrudan olay yöntemine yazılabilir.
Çağrılan çok sayıda olay yöntemi için, bununla başa çıkmak için bir başlık açarsınız, örneğin socket veya httplistener gibi. (veri miktarı azdır ve göremezsiniz, veri miktarı büyük olduğunda haha, doğrudan ölür)
|