Android tam bilgi sistemi rotası (acemi-yaşlı-büyük inek yola girmelidir)

Önsöz

Mobil Ar-Ge hararetli ve giderek daha fazla insan Android geliştirmeyi öğrenmeye başlıyor. Ancak birçok insan, başlamanın kolay olduğunu ve büyümenin zor olduğunu düşünüyor. Gelecek hakkında kafaları biraz karışıyor, becerilerini nasıl geliştireceklerini ve sonraki aşamaya hangi içeriğin eklenmesi gerektiğini bilmiyorlar. Pazar da çoğunlukla bilgi grafiklerinden bahsediyor, sistemden yoksun ve büyüme ritmi. Bu vesile ile Android Ar-Ge'ye yönelik gelişmiş bir yol derliyorum, umarım herkese yardımcı olur.

Alanın uzunluğu nedeniyle bazı soruların cevapları makalede yer almıyor ancak ben bunları bir belge halinde derledim ve özetledim, lütfen okuyunuz Makalenin sonunda Al ~

Java temelleri

  • Java Object sınıfı yöntemleri
  • HashMap ilkesi, Karma çakışması, eşzamanlı koleksiyon, iş parçacığı güvenli toplama ve uygulama ilkesi
  • HashMap ve HashTable arasındaki fark
  • HashCode işlevi, hashCode yönteminin aşırı yüklenmesi
  • ArrayList ve LinkList arasındaki fark ve bağlantı
  • GC mekanizması
  • Java yansıtma mekanizması, Java proxy modu
  • Java jenerikleri
  • Senkronize prensip
  • Uçucu uygulama ilkesi
  • Yöntem kilidi, nesne kilidi ve sınıf kilidinin anlamı ve farkı
  • İş parçacığı senkronizasyon yöntemleri: Senkronize, kilit, yeniden giriş Kilit analizi
  • Java kilit türleri: adil kilitler, iyimser kilitler, muteks kilitler, parçalı kilitler, önyargılı kilitler, döndürme kilitleri vb.
  • ThreadLocal ilkesi ve kullanımı
  • ThreadPool'un kullanımı ve örnekleri
  • Wait () ve sleep () arasındaki fark

Java Advanced

  • Java sanal makinesi, Java işlemi, Java GC mekanizması (ulaşılabilirlik analiz yöntemi, referans sayma yöntemi)
  • Java nesnelerinin tam yaşam döngüsü
  • JVM bellek modeli
  • Süreçler arası iletişim, iş parçacıkları arası iletişim
  • JVM sınıfı yükleme mekanizması
  • Java başvuru türleri
  • Tasarım modelleri: Ortak tasarım modellerine, özel, yansıma mekanizmalarına ve proxy modellerine ek olarak
  • HTTP protokolü ve HTTPS protokolü
  • Soket protokolü, Soket uzun bağlantı gerçekleştirir
  • TCP ve UDP protokolü
  • GET ve POST'un HTTP protokolünde somut olarak gerçekleştirilmesi
  • Serileştirme ve seriyi kaldırma
  • İş parçacığı havuzunun gerçekleşme ilkesi
  • Temel veritabanı bilgisi: çoklu tablo sorgusu, dizin, veritabanı işlemi

Veri yapısı ve algoritma

veri yapısı

  • Yığın ve sıra
  • Dizi ve bağlantılı liste, dinamik bir diziyi özelleştirin
  • Karma tablosu ve Karma çatışmalarının çözümü
  • İkili ağaç
  • B + B ağacı
  • Temel sıralama algoritması: önemli noktalar: hızlı sıralama, birleştirme sıralama, yığın sıralama (büyük kök yığın, küçük kök yığın)
  • Hızlı kuyruğun optimizasyonu
  • İkili arama ve değişken ikili arama
  • Huffman ağacı, kırmızı-siyah ağaç
  • String işlemi, string arama, KMP algoritması
  • Grafik BFS, DFS, prim, Dijkstra algoritması (üst düzey beceriler)
  • Klasik problem: büyük verilerin işlenmesi (bir milyar TOP K problemindeki en büyük 10.000 sayıyı bulmak için)

algoritma

  • Böl ve ele geçir algoritması
  • Dinamik program
  • nasılsın
  • Dal ve sınır

Android ile ilgili temel bilgiler

  • Uygulama yaşam döngüsü
  • Android Aktivite yaşam döngüsü
  • Android Service, IntentService, Service ve bileşenler arasında iletişim
  • Etkinlik onNewIntent
  • Parça tembel yükleme uygulaması, parametre aktarımı ve depolama
  • Ayrıntılı ContentProvider örneği
  • Yayın Alıcısı kullanım özeti
  • Android mesaj mekanizması
  • Bağlayıcı mekanizması, paylaşılan bellek uygulama prensibi
  • Android olay dağıtım mekanizması
  • Android multithreading uygulaması: Thread, HandlerThread, AsyncTask, IntentService, RxJava
  • ActivityThread nasıl çalışır?
  • İç içe sürgü uygulama prensibi
  • RecyclerView ve ListView (önbelleğe alma ilkesi, fark bağlantısı, avantajları ve dezavantajları)
  • Çizim ilkesini görüntüleyin, özel Görünüm, özel ViewGroup
  • Görünüm, SurfaceView ve TextureView
  • Looper.loop ana iş parçacığı neden sonsuz döngüye neden olmuyor?
  • ViewPager önbellek uygulaması
  • RequestLayout ,validate, postInvalidate'in farkı ve bağlantısı
  • AndroidP'nin yeni özellikleri
  • Android iki sanal makine
  • ADB yaygın olarak kullanılan komutlar
  • Varlık dizini ile res dizini arasındaki fark
  • Android SQLite ile başlarken

Android geliştirme gelişmiş

Giriş:

Android kıdemli mühendisi işe alma gereksinimleri:

1. Android kullanıcı arayüzüne aşina, Android'in çeşitli hata ayıklama araçlarına aşina olan Android SDK'ya aşina;

2. Uygulamayı bağımsız olarak yönetebilen ve geliştirebilen bol Android uygulama mimarisi yetenekleri;

3. Mobil Web geliştirme deneyimi; çeşitli bileşik becerilerle: iOS, H5, Python, .NET ve diğer geliştirme dillerine aşinalık tercih edilir;

4. Android performans optimizasyonu, güvenliği, yazılım takviyesi ve otomatik test hakkında derinlemesine bilgi sahibi olun;

5. Bloglar, açık kaynaklı projeler

Android teknik sorunları

AIDL, Binder, çoklu süreç, Görünüm çizimi süreci, olay dağıtımı, mesaj kuyruğu vb. Bu tür bir bilgi, kendini kıdemli bir Android mühendisi olarak konumlandıranlar için bir zorunluluktur.Aynı zamanda, kıdemli ve genç mühendisleri belirlemek için bir mihenk taşıdır. Bunlar arasında, binder, Android sistemler arasındaki en önemli iletişim araçlarından biridir. Bir uygulamanın geliştirilmesi, birden çok işlemin kullanımından ayrılamaz. Konumlandırma ve itme gibi işlemler, ana işlemin bellek işlemini sağlamak için genellikle arka planda başlatılır; bu nedenle, birden çok işlemi makul bir şekilde kullanmak gerekir; görünümün çizimi Özel kontrolümüzün teorik temeli olan özel kontrol, yalnızca görünümün nasıl çizildiğine hakim olarak kişiselleştirilebilir; olay dağıtımı her zaman Android geliştirmedeki zorluklardan biri olmuştur ve bu konuda uzmanlaşılması gerekir; işleyici mekanizması da Android'de bir zorluktur, çünkü Asynctask, sistem başlangıcı ve Intentservice gibi temel katmanların tümü işleyiciler aracılığıyla uygulanır, bu nedenle işleyici mekanizmasına hakim olmak yalnızca gerçek savaş geliştirme yeteneklerinizi iyileştirmekle kalmaz, aynı zamanda sisteminizin tüm android sisteminin işleyişini anlamasını sağlar.

Android çerçeve katmanı kaynak kodu kontrolü

  • Android paket yönetim mekanizması, temel PackageManagerService
  • Pencere yönetimi, temel WindowManagerService
  • Android Activity başlatma ve yönetimi, temel ActivityManagerService
  • Kök Etkinlik iş akışı
  • Bağlam ilişkilendirme sınıfı

Çeşitli ilkeler, klasik üçüncü taraf kitaplık kaynak kodu serisi

  • Custom LayoutManager, RecyclerView'da LayoutManager nasıl özelleştirilir
  • VLayout'un gerçekleştirme ilkesi, yani LayoutManager'ın nasıl özelleştirileceği
  • Kayma yükleme prensibi, önbelleğe alma şeması, LRU algoritması
  • Güçlendirmenin gerçekleştirilmesi ve ilkesi
  • OKHttp3 kullanımı, ağ isteklerinde Intercept
  • EventBus uygulama ilkesi
  • ButterKnife uygulama prensibi
  • RxJava uygulama prensibi
  • Hançer bağımlılık enjeksiyonu
  • Sıcak onarımın ilkeleri ve çözümleri
  • Bileşenleştirme ilkesi ve çözümü

Android süreç iletişimi ve çok süreçli geliştirme

Android çoklu süreç ve Uygulama ilişkisi

Klasik çözüm: çok süreçli iletişim çözümü: Andromeda

  • Android animasyon mekanizması
  • Android çizim prensibi
  • Android sayfa kurtarma

Android sayfa kurtarma, aşağıdaki iki yöntemi kullanır:

  • onSaveInstanceState (Bundle outState)
  • onRestoreInstanceState (Bundle SavedInstanceState)

onSaveInstanceState: Bu yöntem, Activity sistem tarafından kolayca yok edildiğinde tetiklenir. Özellikle

  • Kullanıcı Ana Sayfa düğmesini tıklar
  • Kullanıcı, diğer uygulamalara geçmek için Ana Sayfa düğmesini tıklar
  • Ek işlemler için bekleyen bir çağrı var

Karma geliştirme ve Android WebView uygulaması

Hibrit geliştirmeyle ilgili bilgi noktaları temel olarak şunları içerir:

  • APP, url'yi yüklemek için WebView'ı çağırıyor
  • WebView paketinde uzmanlaşın, tüm WebSettings yapılandırmasını anlayın, ana WebViewClient, WebChromeClient
  • WebView ve Native arasındaki iki yönlü iletişim mekanizmasında ustalaşın ve iki yönlü iletişim ara yazılımını tek başına kapsülleyin
  • WebView paketlemesi için lütfen şuraya bakın: GitHub: AgentWeb
  • İletişim ara yazılımı ilkesinin anlaşılması: GitHub: web ilerlemesi

Gradle, otomatik derleme, sürekli entegrasyonla ilgili

Android sistemi

Android Studio derleme süreci

Kullanılan derleme araçları:

aapt, aidl, Java Derleyici, dex, zipalign

Ana adımların açıklaması:

  • Res kaynak dosyalarını aapt aracılığıyla paketleyerek R.java, resources.arsc ve res dosyaları (res / raw ve pic gibi ikili ve ikili olmayan dosyalar aynı kalır)
  • .Aidl dosyalarını işleyin ve ilgili Java arayüz dosyalarını oluşturun
  • .Class dosyaları oluşturmak için R.java, Java arabirim dosyaları ve Java kaynak dosyalarını Java Compiler aracılığıyla derleyin
  • Dex komutu aracılığıyla, üçüncü taraf kitaplığındaki .class dosyası ve .class dosyası, classes.dex'i oluşturmak için işlenir.
  • Aapt tarafından oluşturulan resource.arsc ve res dosyalarını, varlık dosyalarını ve sınıfları paketlemek için apkbuilder aracını kullanın.
  • Yukarıdaki apk'de hata ayıklamak veya yayınlamak için Jarsigner aracını kullanın
  • İmzalı apk'yi hizalamak için zipalign aracını kullanın.

Uygulama önyükleme yükleme işlemi

Android Uygulama işleminin Android sanal makine korumalı alan ilkesi

Android mimarisi

Android kaynak kodundaki en önemli üç sınıf: ActivityManagerService PackageManagerService Görünüm Kaynak kodun bu bölümünü hafta sonu okumanızı tavsiye ederim.Kaynak kodunu okumak, gelecekte kendi kodumuzu tasarlama ve yapılandırma becerimizi geliştirebilir.Aynı zamanda, tüm Android sisteminin çalışma prensibini de alttan anlayabiliriz. Ana iş parçacığının mesaj döngüsü gibi diğerleri, Ana iş parçacığı süreçler arasında AMS ile nasıl etkileşim kurar, SystemServer işlemindeki çeşitli hizmetler nasıl çalışır ve AsyncTask nasıl çalışır. Bu bilgi aynı zamanda bir Android kıdemli geliştirme mühendisi olarak da uzmanlaşmalıdır. Gün boyu kullanıcı arayüzü ile dört ana bileşen arasındaki etkileşime giremezsiniz. Android'in bazı sorunlarını daha yüksek bir perspektiften ele almalısınız.

  • MVC deseni
  • MVP modu
  • MVVM modu
  • TEMİZ modu
  • Bileşen geliştirme
  • Çapraz platform geliştirme : Flutter, ReactNative (RN gelecekte sarı olacak, sadece öğrenin)

Mobil geliştirme çevre birimi

Sunucu geliştirme ile ilgili

  • SpringBoot teknolojisi
  • Dinlendirici API geliştirme
  • Ağ protokolü anlayışı TCP / IP, HTTP / HTTPS, OSI yedi katmanlı protokol
  • Yetkilendirme ve kimlik doğrulama sözleşmesi : OAuth2.0 vb.
  • Temel veritabanı teknolojisi
  • ** Veri önbelleğe alma teknolojisi v: Memcached, Redis, Web önbelleğe alma ilkesi
  • Mesaj kuyruğu teknolojisi
  • İzleme ve günlük analizi teknolojisi

Ön uç geliştirme ile ilgili

Çok sayıda ön uç geliştirme bilgisi vardır ve çerçeve sonsuzdur, ancak temel şeyler yalnızca aşağıdakilerdir.

  • Çekirdek gerekir : HTML, CSS, JavaScript
  • Başlangıç : Tarayıcı uyumluluğu, özel kullanıcı arayüzü ve animasyon
  • Orta düzey beceriler: çerçeveler, şu anda çekirdek olarak vue.js ve react.js ile sonsuz bir şekilde ortaya çıkıyor
  • İşbirlikçi geliştirme becerileri Paket yönetimi, modülerleştirme, npm kullanan araçlar, web paketi vb.
  • Gelişmiş beceriler Çerçeve ilkesinin kaynak kodu üzerine araştırma

Çeşitli araçlar geliştirin ve hata ayıklayın

  • Performans analizi araçları : Hafıza Monitörü
  • Performans izleme ve yöntem yürütme analizi : TraceView
  • Analizi görüntüle : Hiyerarşi Görüntüleyici
  • Tersine mühendislik Android Apk dosyaları için ApkTool-tool
  • Lint- Android lint aracı statik bir kod analiz aracıdır
  • Android .dex ve java .class dosyalarını kullanmak için Dex2Jar aracı

Son söz

Bu yazıda herhangi bir hata veya uygunsuzluk varsa, okuyucular bir mesaj bırakıp birbirlerinden öğrenebilirler. Editör çok minnettar ~

Bunu görürseniz ve makalenin iyi yazıldığını düşünüyorsanız, bir başparmak verin? İyileştirmeye değer bir şey olduğunu düşünüyorsanız, lütfen bana bir mesaj bırakın. Kesinlikle dikkatlice sorgulayacak ve eksikliği giderecektir. Teşekkür ederim.

Son olarak, Android programcıları için, yukarıdaki bilgi sistemine ek olarak, gelişmiş UI, performans optimizasyonu, mobil mimar, NDK, hibrit geliştirme (ReactNative + Weex) WeChat uygulaması, Flutter dahil ancak bunlarla sınırlı olmamak üzere bazı bilgileri sizin için derledim. Ve böylece Android gelişmiş uygulama teknolojisinin tüm yönlerinde; Size yardımcı olmayı ve öğrenmek için İnternette bilgi aramak için herkesin zamanından tasarruf etmeyi umuyorum, ayrıca birlikte öğrenmek için dinamikleri çevrenizdeki arkadaşlarınızla paylaşabilirsiniz!

Çalışma notları sistem rotasının daha ayrıntılı bir yapısını genişletmek gerekiyor: sahne arkası özel mesaj yanıtı "Android bilgileri" ücretsiz olarak ~

190615 Yarın, Fan Chengchengin resmi olarak bir günlük geri sayım başlatan "BİR FAN GİBİ" şarkısını dinleyeceğim
önceki
190615 Wang Yuan, Uzun Yürüyüşün ruhunu yeniden yaşar ve yol boyunca yürür
Sonraki
Android mobil geliştirme programcılarının kariyer gelişimi hakkında konuşma
"TFBOYS" "Haberler" 190615 Wang Yuan, Uzun Yürüyüşün ruhunu yeniden yaşıyor
Android'in en son öğrenim materyalleri: popüler çerçeve web sitesi kitap önerileri ve açık kaynak kitaplık koleksiyonu
190615 Wu Yifan şifresi bu yaz yüksek ateşle vurur, yapımcı Wu'ya kuzeye ve güneye seyahat etmek için eşlik eder.
Aibo'dan RoboMaster'a: "dövüşen" robotların gerçeküstü çarpıtılması
Ali teknik uzmanlarından iş arayanlara 10 öneri (Android mülakat sorularının bir özeti makalenin sonuna eklenmiştir)
190615 Yeni Rap Takdir Konferansı'nın Açılışı, Profesyonel Yapımcı Wu "En Eğlenceli"
Grafikler ve metin, Linux işlemlerini ve iş parçacıklarını canlı bir şekilde açıklar
İksire ihtiyacın yok, sonsuza kadar yaşayabilirsin
Android öğrenmenin üç temel sorusu: Ne öğrenmeli? Nasıl ögrenilir? Şimdiye kadar
Huawei, üst düzey pazarda neden Apple'ı geride bırakıyor?
Android ve Flutter arasındaki iletişimi anlamak için bir makale
To Top