Activity.runOnUiThread
ve View.post
arasındaki fark nedir, birisi açıklayabilir mi?Android: Activity.runOnUiThread ve View.post arasındaki fark nedir?
cevap
Eğer etkinliğe doğrudan erişimi olmadığında View.post
faydalı olması dışında hiçbir gerçek fark yoktur. Her iki durumda da
değil UI iş parçacığı üzerinde ise, Handler#post(Runnable)
perde arkasında çağrılacak.
CommonsWare yorumunda belirtildiği gibi, aralarında bir fark var iki - Ui parçacığı üzerinde çağrıldığında View#post
sıraya runnable
yayınlayacağız olurken, Activity#runOnUiThread
Handler#post
çağrı), doğrudan
run
yöntemi arayacak
önemli nokta IMO ikisi de aynı hedefe sahip olmasıdır, ve kullanmak kim için, hiçbir fark olmalıdır (ve uygulama gelecekte değişebilir).
Tek fark: 'runOnUiThread()' geçerli iş parçacığını kontrol eder ve ana uygulama iş parçacığı üzerinde olursak hemen 'Runnable'ı çalıştırır. 'post()' her zaman hangi işlevin çağrıldığına bakılmaksızın sıradaki Runnable'ı koyar. – CommonsWare
@CommonsWare - Doğru, sorumu düzenleyeceğim. – MByD
Şimdi, açıklamanızla ilgili açıklamayı ve @CommonsWare yorumunu temel alarak görebiliyorum. –
Çoğu durum için kabul edilebilir ve çoğu parça için değiştirilebilirler, ancak alt düzeyde farklıdır. Tabii ki en büyük fark, bir Activity
ve diğerinin View
'dan alınabilmesidir. Orada olanlar arasındaki örtüşme bir sürü, ama bazen bir Activity
içinde bir View
erişimi olmayacak ve bazen View
içinde bir Activity
erişimi olmayacaktır. Ben an answer to another SO question on View.post
belirtildiği ben View.post
ile karşılaştığınız kenar vakalarının
Bir: View
bir pencereye takılı olduğunda View.post
sadece başka bir iş parçacığı den çalışır. Bu nadiren bir sorun olmakla birlikte, bazen size Activity
arasında onCreate
yönteminde View.post
çağrı özellikle Runnable
, yürütmek asla neden olabilir. Alternatif olarak, Activity.runOnUiThread
ve View.post
'un kapakların altında kullanıldığı Handler.post
'u kullanmak gereklidir.
Activity.runOnUiThread ve view.post() arasındaki bir diğer fark görünüşüdür sonra() denir view.post bu çalıştırılabilir olan
Ayrıca onCreate() 'da bağlanmadığında başarısız olabilir? Hm, bu durumda ViewRoot tarafından sağlanan "Handler" e gönderilmesini beklerdim. – Jens
@Jens Evet, kaynağa baktım ve 'View.post', henüz eklenmediyse daha sonra yürütülmesi gereken bir sıraya 'Runnable' eklemelidir. Kaynakta daha fazla kazmadım ama [docs] (http://developer.android.com/reference/android/view/View.html#post%28java.lang.Runnable%29) şunu söylüyor: "Bu yöntem, yalnızca bu Görünüm bir pencereye eklendiğinde UI iş parçacığı dışından çağrılabilir." Bu yüzden eğer şu anki iş parçacığı üzerinde ise, o zaman söyledikleriniz doğruysa, eğer o değilse muhtemelen 'Runnable'ı yutar. Bunu kesinlikle benim kodumda yaptım. – kabuko
@kabuko Teşekkürler, cevabınızı başka bir noktadan gösterir. Nasıl kabul edilemiyorum 1'den fazla cevap mantığın arkasındaki mantığı göremiyorum meta forumuna üye olacak –
(doğruluğu için düzenlenmiş "başka bir iş parçacığı" eklenmiştir) bir pencereye bağlı. kullanışlı cevapları ile
Gösterileni nasıl gösterebilirim? Görünür mü? Görünmez bir görünüme hiç çağrılmadı mı? –
Belirsizliği düzeltin Alex. – pareshgoel
Bu en önemli fark IMHO. Pek çok kişi, görünümün eklendikten sonra yürütülmesi gereken öğeleri yürütmek için view.post() işlevini kullanır. – Sotti
- 1. Python'da {} ve [] arasındaki fark nedir?
- 2. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 3. $ arasındaki fark nedir? ve PowerShell
- 4. ? Android: attr/textAppearanceMedium ve? Android: textAppearanceMedium arasındaki fark nedir?
- 5. Araçlar arasındaki fark nedir: metin ve android: android
- 6. apklib ve jar dosyaları arasındaki fark nedir?
- 7. Android terimleri arasındaki fark?
- 8. Android'de Bitmap ve Drawable arasındaki fark nedir?
- 9. Fark() arasındaki fark nedir mustache.js
- 10. CPU ve Yonga Kümesi arasındaki fark nedir?
- 11. ActivityCompat ve ContextCompat arasındaki fark nedir?
- 12. arasındaki fark nedir?
- 13. Java arasındaki fark nedir
- 14. arasındaki fark nedir?
- 15. arasındaki fark nedir?
- 16. Android marjı başlangıç / bitiş ve sağ/sol arasındaki fark nedir?
- 17. Android setVariable (BR.xyz, modeli) ve databinding.setXYZ (model) arasındaki fark nedir
- 18. ndk-build ve android için APP yapmak arasındaki fark nedir?
- 19. android ve g ++ ubuntu içinde g ++ arasındaki fark nedir?
- 20. Android geliştirmede platform araçları ve SDK araçları arasındaki fark nedir?
- 21. Android - offsetTopAndBottom arasındaki fark, setTranslateY
- 22. app.doScript ve $ .evalFile arasındaki fark nedir?
- 23. gVim ve gVim arasındaki fark nedir?
- 24. isAlpha ve isLetter arasındaki fark nedir?
- 25. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 26. .got ve .got.plt bölümü arasındaki fark nedir?
- 27. AutomationProperties.AutomationID ve AutomationProperties.Name arasındaki fark nedir?
- 28. Android'de getDir ve getFilesDir arasındaki fark nedir?
- 29. R içinde `=` ve `<-` arasındaki fark nedir?
- 30. uint ve System.UInt32 arasındaki fark nedir?
benzer sorular: (http://stackoverflow.com/questions/4083787/runnable-is-posted-successfully-but-not-run), [nedir [Runnable başarıyla fakat çalıştırmak yayınlanmıştır] Activity.runOnUiThread (çalıştırılabilir etki) ve Handler.post()?] (http://stackoverflow.com/questions/1839625/whats-the-difference-between-activity-runonuithreadrunnable-action-and-handler) arasındaki fark, [Handler.post (Runnable r) ve Activity.runOnUiThread (Runnable r)] arasındaki fark (http://stackoverflow.com/questions/7452884/difference-between-handler-postrunnable-r-and-activity-runonuithreadrunnable) –