Masaüstü uygulama geliştirmede (örn. Java, WPF, Cocoa) hangi kavramlar Android'in Activity, ActivityGroup ve Intent gibi temel kavramlarına en yakın? (Ve neleri farklı olduklarına dair nüanslar nelerdir?)Android konseptlerini masaüstü geliştirme perspektifi ile anlama
cevap
Bu soruyu sorduğunuzda şaşırmadım. Android programlama paradigması, kişisel olarak deneyimlediğim her şeyden oldukça farklı ve API'deki ilk bakışınız biraz göz korkutucu olabilir. Hiç başka bir mobil cihazda hiç geliştirmedim, ancak Android'in mevcut işletim sisteminin en katı mimarisine sahip olduğunu ve birçok tasarım toplantısının sonucu olduğunu düşünüyorum.
kafamın üst kapalı aklınıza gelebilecek bazı karşılaştırılabilir desenler
- bir
Activity
bir masaüstü sisteminde bir pencereye esasen eşdeğerdir ancak birçok yönden de bir uygulamaya denk olabilir bir bütün olarak. Bir Android uygulaması genellikle birden fazlaActivity
'dan oluşmasına rağmen, her bir etkinliğin kendi iyi tanımlanmış yaşam döngüsü ve kendini hazırda bekleme/geri yükleme yöntemleri vardır (ör.onSaveInstanceState()
yöntemi). Bununla birlikte, birActivity
kesinlikle bir işleme eşdeğer değildir. Android işlem yaşam döngüsünün sıkıntılarını gerçekten anlamak istiyorsanız, Etkinlik javadoc'unu okuyun ve this other SO question'a bakın. ActivityGroup
sadeceandroid.widget.TabHost
ile birlikte kullanılır.ActivityGroup
'u tek birActivity
gibi ele almalısınız.- Yukarıda bahsedilen bir kişi
Activity
bir kapsayıcıdır ve öyle, ancak düzen veya çizimden sorumlu çocuklara sahip değildir. Daha iyi bir benzetmenin "Etkinlik: window :: ViewGroup: layout/container" olduğunu söyleyebilirim. android.app.Service
== cin- en UI çerçeveler olduğu gibi, tüm UI işlemleri tek bir iş parçacığı ("UI iş parçacığı") üzerinde gerçekleşmesi ve üzerinde yürütülecek bir kod belli bir yığın sıraya izin yarar yöntem vardır UI iş parçacığı eşzamansız olarak.Bu, WPF'nin
DispatcherObject
veya SWT'ninDisplay
numarasına benzer. - Android, kullanıcı alanı fikrini, çekirdek alan fikrini dosya sistemine genişletir; diğer uygulamaların sanal belleğine erişemezsiniz, ancak uygulamanızın başka bir kullanıcı veya uygulamanın okuma/yazma izinleri bulunmadığı kendi dosya sistemi de vardır.
- Uygulamanızın özel veri deposuna erişimi olan başka uygulamalar sağlamak isterseniz, bunu
ContentProvider
kullanarak gerçekleştirebilirsiniz. ContentProviders, sorgu tabanlı bir sözdizimi sunar ve geleneksel bir işletim sisteminde bulabileceğiniz herhangi bir ODBC uygulamasına çok benzer. - Düşünebildiğim Intents için en yakın benzetim aslında AppleScript. OS X uygulamalarının komut dosyası altyapısına belirli yöntemler göstermesi gibi, Android uygulamaları da yüksek düzeyde IPC'nin "niyetleri" ni işleyebilir. Buradaki en büyük fark, Apple-scriptable uygulamalarının betik elemanlarını bir "betikleme sözlüğü" aracılığıyla açığa çıkarmasıdır, buna karşılık bir Android uygulamasının bu uygulama için
AndroidManifest.xml
'a bakmadığınız sürece hangi amaçların ele alınabileceğini bulmak zor olmaktadır.
için Sonuç: Android iyi ya da kötü, karşılaştığım başka ve her şeyden daha çok çok farklıdır, zaman içinde keşfetmeye devam edecektir platformu hakkında çok sayıda nüanslar olacak. Yapabileceğiniz en iyi şey, Geliştirici Kılavuzu'nu doğrudan yukarıdan aşağıya doğru okuyarak başlamaktır. Tam zamanlı bir Android geliştiricisi olmak için 7 ayım var ve hala her gün yeni şeyler öğreniyorum. :-)
- Olaylar: Artık iki tane var, Olaylar ve Amaçlar. Amaçlarla, herkes kayıt olmaktan ziyade davranışlara abone olabilir.
- Masaüstü widget
Hem, kitaplığı (değil kullanıcı arabirimi kavanozları) alır (birçok kısıtlamalarla) android Widget aynıdır ve J2SE kesilmiş olan J2ME aksine minimal değişikliklerle birlikte çalışır. Android'in JVM'si temel Java kütüphanelerine neredeyse eşdeğerdir. Lucene'yi denedim ve Android'de çok az kesinti ile çalıştı.
Masaüstü geliştirme sayesinde bu, mobil olduğu için anlayamıyorsunuz. Sonunda (niyet sistemi daha halledeceğim
- Etkinlik = Formu/Konteyner
- ActivityGroup az sıklıkta veya kullanılan tüm
- Intents yazılım işlemlerini çıkarmaya API ağ geçidi bir çeşit olay bir kod tarafından ele alınır)
Olaylar, olayların yönteminize eklenme biçimindeki Olaylardan farklıdır. Amaçlar önce SDK'da derinlere iner ve ele alındığında (yayınlanmaya, yayınlanmaya, bildirilmeye), bir etkinlik olarak geri dönecek ve böylece harekete geçebilirsiniz.
- 1. Android: DDMS perspektifi vs Hata ayıklama perspektifi
- 2. libGDX, yalnızca masaüstü uygulama geliştirme için uygun mu?
- 3. Daha hızlı Android geliştirme
- 4. Docker'da Android geliştirme ortamı
- 5. Android Oyun Geliştirme
- 6. Android geliştirme araç grupları
- 7. Android Tablosunu Java Masaüstü Uygulamasına Aktarma
- 8. Bir masaüstü uygulaması ile bir masaüstü uygulaması arasındaki fark nedir?
- 9. Silverlight geliştirme uygunluk sorunları
- 10. Android cihaz olmadan android uygulamaları geliştirme
- 11. Android geliştirme - Closed alpha testing
- 12. Android geliştirme becerilerimi nasıl temizlerim?
- 13. Micromax funbook tabletinde Android geliştirme
- 14. Uygulama vs middleware geliştirme Android
- 15. Değişim telefon numarası - Android geliştirme
- 16. android geliştirme yükleme URL resmi
- 17. Android ROM Geliştirme. Ne alır?
- 18. JDK 1.7 ile Android'i derleyin - Android Geliştirme Aracı
- 19. Android kimlik doğrulamasında niyetleri anlama
- 20. Android 4.0 geliştirme - onMenuItemSelected (int, Menü)
- 21. En iyi Android 2.0 geliştirme kitabı?
- 22. ubuntu sunucusu vs masaüstü sürümü
- 23. Jailbroken ile Geliştirme iPhone (Xcode)
- 24. GLKit ile çapraz platform geliştirme?
- 25. node.js ile masaüstü uygulamaları oluşturmak mümkün mü?
- 26. HTML5 Masaüstü Bildirimleri (ideal Açısal ile)
- 27. Ruby ile bir masaüstü uygulaması oluşturabilir miyim?
- 28. geliştirme
- 29. HL7 Bakım Programının Sürekliliği (CCD) Geliştirme SQL Programlama ile Geliştirme
- 30. Düğme metni ve eylemi değiştir - android geliştirme