Altın üç gümüş dört yakında geliyor, ancak bu yıl özel nedenlerden dolayı altın dört gümüş beşe ertelenebilir, ancak bu her iş bulmak için iyi bir zaman, arkadaşlar mülakat sorularını gözden geçirmekle meşgul mü? Eh, editör bir süre önce iş aramakla meşguldü ve birçok şirketle röportaj yaptı.Neyse ki favori şirketime katıldığım için şanslıydım. Aşağıda kişisel olarak mücadele ettiğim mülakat sorularının cevaplarını ve aldığım mülakat sorularını özetleyip paylaşacağım. Rehberlik ve tavsiye için tüm ortaklara hoş geldiniz.
Aşağıdakiler sadece Android bilgisidir.Java mülakat sorularına ihtiyacınız varsa aşağıya bir mesaj bırakabilirsiniz.
onCreate () Aktiviteler oluşturun, bazı veri başlatma işlemleri yapın onStart () Görünmez Özgeçmişte() Yığının en üstünde bulunan kullanıcıyla etkileşim kurabilir onPause () Başka bir etkinlik duraklatıldığında, başlatıldığında veya devam ettirildiğinde çağrılır onStop () Dur ve görünmez ol onDestroy () yok etmek onRestart () Durdurulmuş durumdan çalışma durumuna geçiş
onCreate ()
Sistem, hizmet ilk oluşturulduğunda bu yöntemi çağıracaktır. Hizmet zaten çalışıyorsa, bu yöntem çağrılmayacak, yalnızca bir kez çağrılacaktır.
onStartCommand ()
Başka bir bileşen startService () 'i çağırarak bir hizmeti başlatmak istediğinde, sistem bu yöntemi çağıracaktır.
onDestroy ()
Hizmet artık kullanılmadığında ve yok edileceğinde, sistem bu yöntemi çağıracaktır.
onBind ()
Başka bir bileşen bindService () 'i çağırarak hizmete bağlandığında, sistem bu yöntemi çağıracaktır.
onUnbind ()
Başka bir bileşen unbindService () çağırarak hizmetten ayrıldığında, sistem bu yöntemi çağıracaktır.
onRebind ()
Eski bileşen hizmetten ayrıldığında, başka bir yeni bileşen hizmete bağlanır ve onUnbind () true değerini döndürür, sistem bu yöntemi çağırır.
1.startService
. Hizmeti devralmak için bir sınıf tanımlayın . Manifest.xml dosyasında hizmeti yapılandırın service. Hizmeti bağlam startService (amaç) ile başlatın . Artık kullanılmadığında, hizmeti durdurmak için stopService (Amaç) çağrısı yapın
2.bindService
. BindService servis segmentini oluşturun, servisten devralın ve sınıfta, bağlayıcı arayüzünü uygulayan bir örnek nesnesi oluşturun ve istemcinin çağırması için genel yöntemler sağlar
. Bu bağlayıcı örneğini onbind () geri çağrı yönteminden döndür
. İstemcide, onserviceconnected () geri çağrı yönteminden bağlayıcıyı alın ve bağlı hizmeti çağırmak için sağlanan yöntemi kullanın
. Standart mod
a. Aktivitenin varsayılan başlangıç modu
b. Bir Activity her başlatıldığında, yığının en üstünde yeni bir örnek oluşturulur. Örneğin: çalar saat programı
Dezavantajlar: Etkinlik zaten yığının en üstündeyse ve Etkinliği yeniden başlattığınızda yeni bir örnek oluşturmanız gerektiğinde, doğrudan yeniden kullanılamaz.
.singleTop modu
Özellikler: Bu mod, başlatılacak Activity örneğinin yığının en üstünde olup olmadığını belirler, yığının en üstündeyse doğrudan yeniden kullanılır, aksi takdirde yeni bir örnek oluşturulur. Örneğin: tarayıcı yer imleri
Dezavantajlar: Activity yığının en üstünde değilse, birden çok örnek oluşturulabilir.
.singleTask modu
Özellikler: Activity'i uygulamanın tamamında yalnızca bir örnek yapın. Activity'i her başlattığınızda, sistem öncelikle yığında mevcut bir Activity örneği olup olmadığını kontrol eder, eğer varsa
Doğrudan yeniden kullanın ve mevcut Aktivitedeki tüm örnekleri açın. Örneğin: tarayıcı ana arayüzü
. SingleInstance modu
Özellikleri: Bu moddaki etkinlik, Etkinlik örneklerini yönetmek için yeni bir görev yığını başlatır ve tüm sistemde yalnızca bir kuvvet vardır. Aktivite hangi görev yığınından başlatılırsa başlatılsın, Aktivitenin bulunduğu görev yığını ön plana aktarılır, böylece Aktivite görüntülenir. Ana işlev, farklı programlarda bir Aktivite paylaşmaktır.
Ekrana tıkladığımızda aşağıdaki olaylar gerçekleşir:
Activity, olayı Window'a iletmek için dispathTouchEvent () yöntemini çağırır;
Pencere daha sonra olayı DecorView'e iletir (DecorView, View'un kök düzenidir);
DecorView daha sonra ViewGroup'a aktarılır;
Aktivite -- > Pencere > DecorView > ViewGroup > Görünüm
Olay dağıtımı için üç temel yöntem vardır
dispatchTouchEvent () gönderimi
onInterceptTouchEvent () müdahalesi, yalnızca ViewGroup bu yönteme sahiptir
onTouchEvent () dokunma olaylarını yönetir
Activity ilk olarak dağıtmak için dispathTouchEvent () 'i çağırır ve ardından süper'i devre dışı bırakmak için çağırır
ViewGroup önce dağıtım için dispathTouchEvent () 'i çağırır ve ardından onInterceptTouchEvent () (müdahale olayı) çağırır. Kesişme olayı doğru olarak dönerse, bu engelleme anlamına gelir ve olay daha düşük ViewGroup veya View'e aktarılmayacaktır; false, olayı kesmeyeceği ve dağıtmaya devam etmeyeceği anlamına gelir. Varsayılan yanlıştır, hatırlatılması gerekir, View'da onInterceptTouchEvent () yöntemi yoktur
Olaylar ViewGroup ve ViewGroup, ViewGroup ve View arasında geçirilir ve son olarak View'a ulaşır;
View, dispathTouchEvent () yöntemini çağırır ve ardından olayı OnTouchEvent () içinde işler; OnTouchEvent (), olayın tüketildiği ve artık geçmediği anlamına gelen true değerini döndürür; false değerini döndürür, bu da olayın tüketilmediği ve işlenmek üzere üst katmana döndürüldüğü anlamına gelir.
. Attr.xml dosyasını yazmak için View özniteliklerini özelleştirin . Yerleşim dosyasındaki referans ve aynı zamanda ad alanına referans verin . Görünüm oluşturma yönteminde özel özniteliklerimizi edinin ve bunları özel denetimde okuyun (inşa Attr.xml dosya değerini alma yöntemi) . Yeniden Yaz onMesure . Yeniden Yaz onDraw
Çerçeve Animasyonu
Bir animasyon oluşturmak için bir dizi Çekilebilir kaynak yükleyin. Basitçe söylemek gerekirse, animasyon efektini elde etmek için bir dizi resim oynatmaktır. Her resmin süresini özelleştirebilirsiniz
Ara Animasyon
Ara, Görünüm nesnesine çevirme, yakınlaştırma, döndürme, saydamlık vb. Gibi bir dizi animasyon efekti uygulayabilir. Ancak, View özelliğinin değerini değiştirmez, yalnızca Görünümün çizim konumunu değiştirir.Örneğin, bir düğme bir animasyondan sonra orijinal konumunda değildir, ancak tıklama olayı yine de orijinal koordinattır.
Emlak Animasyonu
Geleneksel View nesnesine ek olarak, animasyonlu nesne bir Object nesnesi de olabilir Animasyon bittikten sonra, Object nesnesinin özellik değeri gerçekten değiştirilir.
Uygulama Yanıt Vermiyor, yani uygulama yanıt vermiyor
Bunun üç sebebi var:
a) KeyDispatchTimeout (5 saniye) Ana tuş türleri veya dokunma olayları belirli bir süre içinde yanıt vermiyor
b) BroadcastTimeout (10 saniye) BoradcastReceiver belirli bir süre içinde işlenemez
c) ServiceTimeout (20 saniye), Hizmetin belirli bir süre içinde işlenememe olasılığı düşüktür.
ANR'den kaçınılması gereken en önemli şey, ana iş parçacığında zaman alan işlemleri azaltmaktır. Genellikle aşağıdaki şemalardan başlamanız gerekir:
a) Zaman alan GÇ işlemlerini işlemek için alt iş parçacıkları kullanın
b) Çocuk iş parçacığının önceliğini düşürün.Tahre veya HandlerThread kullanırken, önceliği ayarlamak için Process.setThreadPriority (Process.THREAD_PRIORITY_BACKGROUND) 'u çağırın, aksi takdirde program yanıtı düşürülür çünkü varsayılan Thread önceliği ana iş parçacığı ile aynıdır
c) Ana iş parçacığını engellemek için Thread.wait () veya Thread.sleep () kullanmak yerine alt iş parçacıklarının sonuçlarını işlemek için İşleyiciyi kullanın
d) onCreate ve onResume Activity'nin geri çağırmalarında zaman alan kodlardan kaçınmaya çalışın
e) BroadcastReceiver'daki onReceiver kodu da zaman alan işlemleri en aza indirmelidir.İşleme için intentService kullanılması önerilir. IntentService, zaman alan işlemleri işledikten sonra geleneksel Hizmette hizmeti durdurmayı ve yok etmeyi unutma sorununu çözen, otomatik olarak duracak zaman uyumsuz bir hizmettir.
Öğe düzeni, ne kadar az düzey olursa o kadar iyidir, optimizasyonu görüntülemek için hiyerarşi görünümü aracını kullanın.
convertView'ü yeniden kullan
ViewHolder'ı kullanın
Öğede resimler olduğunda, eşzamansız olarak yükleyin
Hızlıca kaydırırken resimleri yüklemeyin
Öğede resimler varken, resimler uygun şekilde sıkıştırılmalıdır
Verilerin sayfalama yüklemesini gerçekleştirin
Aktivitenin android: configChanges ayarlanmadığında, ekran kesildiğinde her bir yaşam döngüsü yeniden başlatılacaktır. Ekran yatay olarak kesildiğinde bir kez ve ekran dikey olarak kesildiğinde iki kez yürütülecektir.
Aktivitenin android: configChanges = "oryantasyonu" ayarını yaptığınızda, ekran kesildiğinde her bir yaşam döngüsü yeniden çağrılacak ve ekran yatay veya dikey olarak kesildiğinde yalnızca bir kez çalıştırılacaktır.
Activitynin android: configChanges = orientation | keyboardHidden ayarı yapılırken, ekran kesildiğinde her yaşam döngüsü tekrar çağrılmaz, yalnızca onConfigurationChanged yöntemi çalıştırılır
Yazı tipi için sp kullanın, dp kullanın, match_parent, wrap_content kullanın, daha fazla ağırlık kullanın
Resim kaynakları, farklı resimlerin çözünürlükleri, ilgili klasördeki yüzdelerle değiştirilebilir.
RecyclerView, ListView, GridView ve şelale akışının etkisini tamamlayabilir. Aynı zamanda, listenin kaydırma yönünü (dikey veya yatay) da ayarlayabilirsiniz;
RecyclerView'da görünümlerin yeniden kullanılması, geliştiricilerin kendi kodlarını yazmalarını gerektirmez ve sistem paketi zaten tamamlamıştır.
RecyclerView kısmen yenilenebilir.
RecyclerView, öğe animasyon efektlerini uygulamak için bir API sağlar.
Performans açısından:
Verileri sık sık yenilemeniz gerekiyorsa ve animasyonlar eklemeniz gerekiyorsa, RecyclerView daha büyük bir avantaja sahiptir.
Yalnızca liste olarak görüntülenirse, ikisi arasındaki fark çok büyük değildir.
Eşzamansız mesaj işleme mekanizması temel olarak kullanıcı arayüzünün alt iş parçacığı tarafından güncellenmesi sorununu çözmek için kullanılır.
. Mesajda
İş parçacıkları arasında geçen, farklı iş parçacıkları arasında veri alışverişi yapmak için kullanılan az miktarda bilgiyi içeride taşıyabilir
Tamsayı verilerini taşımak için what, arg1, arg2 alanlarını kullanabilirsiniz
Obj alanı Object nesnelerini taşır
. İşleyici (İşleyici)
Genelde mesaj göndermek ve işlemek için kullanılır, sendMessage () mesaj göndermek için kullanılır ve sonunda işlenmek üzere handleMessage () 'e geri dönecektir.
. MessageQueue (mesaj kuyruğu)
Temelde İşleyici aracılığıyla gönderilen tüm iletileri depolar, her zaman işlenmeyi bekleyen kuyrukta bulunurlar
İş parçacığı başına yalnızca bir MessageQueue vardır
. İlmek yapıcı (ilmek yapıcı)
Loop () yöntemi çağrıldıktan sonra, işlenecek mesajlar sürekli olarak MessageQueue'dan çıkarılır ve ardından işlenmek üzere handleMessage'a geçirilir.
(1) Yetersiz bellek (OOM) ile bellek sızıntısı arasındaki fark (bir nesne geri dönüştürülemez). (2) Bellek sızıntılarının nedenleri (3) Bellek sızıntısı tespit araçları LeakCanary
Bellek yetersiz: Bu, program belleğe başvurduğunda, kullanması için yeterli bellek alanı olmadığı ve bellek yetersiz olduğu anlamına gelir; örneğin, bir tamsayı uygulanıyorsa, ancak bunun için uzun süre saklanabiliyorsa, bu bir bellek taşmasıdır. Genel olarak konuşursak, bellek taşması yetersiz bellektir.
Bellek sızıntısı bellek sızıntısı: Bu, programın belleğe başvurduktan sonra ayrılmış bellek alanını serbest bırakamayacağı anlamına gelir.Bir bellek sızıntısının zararı göz ardı edilebilir, ancak bellek sızıntısının sonuçları çok ciddidir.Ne kadar bellek olursa olsun, er ya da geç kullanılacaktır.
1. İşleyicinin neden olduğu bellek sızıntısı.
Çözüm: İşleyiciyi statik bir dahili sınıf olarak bildirmek, SecondActivity harici sınıfına bir başvuruda bulunmayacaktır ve yaşam döngüsünün harici sınıflarla ilgisi yoktur.
İşleyicide bağlam gerekiyorsa, harici sınıflara zayıf referanslar aracılığıyla başvurulabilir.
2. Tekli moddan kaynaklanan bellek sızıntıları .
Çözüm: Bağlam, ApplicationContext'tir, çünkü ApplicationContext'in yaşam döngüsü uygulama ile tutarlıdır, bellek sızıntısına neden olmaz
3. Statik olmayan iç sınıflar tarafından oluşturulan statik örneklerden kaynaklanan bellek sızıntıları.
Çözüm: Bellek sızıntılarını önlemek için dahili sınıfı statik olarak değiştirin
Dördüncü olarak, statik olmayan anonim iç sınıfların neden olduğu bellek sızıntıları.
Çözüm: Anonim iç sınıfı statik olarak ayarlayın.
5. Eşleştirilmemiş kayıt / kayıt silme kullanımından kaynaklanan bellek sızıntıları.
Yayın alıcısını, EventBus'u vb. Kaydedin, bağlantıyı çözmeyi unutmayın.
Altıncı olarak, kaynak nesnesinin neden olduğu bellek sızıntısı kapatılmaz.
Bu kaynaklar kullanımda olmadığında, bunları serbest bırakmak için ilgili close (), destroy (), recycler (), release () ve diğer yöntemleri çağırmayı unutmayın.
Yedi, toplama nesnesinin zamanında temizlenmemesinden kaynaklanan bellek sızıntısı.
Genellikle bazı nesneler koleksiyona yüklenir.Kullanılmadığında, ilgili nesnelere artık referans verilmemesi için koleksiyonu zamanında temizlemeyi unutmamalısınız.
ImageLoader:
avantaj:
İndirme ilerleme durumunu izleme desteği;
Görüntü kaydırma sırasında resim yükleme duraklatılabilir;
Varsayılan olarak birden fazla bellek önbellekleme algoritması uygulayın Bu görüntü önbellekleri, önbellekleme algoritmalarıyla yapılandırılabilir, ancak ImageLoader varsayılan olarak en büyük boyut, ilk önce sil, en az sil, en az kullanılan, ilk önce ve en çok silme gibi daha fazla önbellek algoritması uygular. Uzun ilk silme vb .;
Yerel önbellek dosyası adı kural tanımını destekleyin;
Dezavantajları:
Dezavantajı, GIF resim yüklemesini desteklememesi ve önbelleğe alma mekanizmasının http önbelleğe alma ile iyi bir şekilde entegre olmamasıdır.Tamamen kendi önbelleğe alma mekanizmasıdır.
Picasso:
avantaj:
Kendi istatistiksel izleme işlevi ile, önbellek isabet oranı, kullanılan bellek boyutu, kaydedilen trafik vb. Dahil olmak üzere görüntü önbellek kullanımının izlenmesini destekler.
Öncelikli işlemeyi destekleyin
Görüntü boyutu hesaplaması tamamlanıp yüklenene kadar gecikmeyi destekleyin
Destek uçuş modu, eşzamanlı iş parçacığı sayısı ağ türüne göre değişir Cep telefonu uçuş moduna geçtiğinde veya ağ türü değiştiğinde, maksimum eşzamanlı iş parçacığı havuzunu otomatik olarak ayarlayacaktır.
"Yerel önbellek yok". Picasso'nun kendisi yerel önbelleğe alma yapmaz, ancak okhttp tarafından uygulanır.Bunun avantajı, görüntünün sona erme süresinin Response Header'da Cache-Control ve Expired isteyerek kontrol edilebilmesidir.
Dezavantajları:
GIF desteklenmediğinden, resimleri varsayılan olarak önbelleğe almak için ARGB_8888 biçimi kullanılır ve önbellek boyutu büyüktür.
Kayma:
avantaj:
Resim Önbelleği- > Medya önbelleği, Gif, WebP, küçük resim desteği. Hatta Video.
Öncelikli işlemeyi destekleyin
Etkinlik / Parça yaşam döngüsü ile uyumlu, trimMemory desteği
okhttp, Volley'i destekleyin. Glide, verileri varsayılan olarak, okhttp veya Volley ile kullanılabilen UrlConnection aracılığıyla alır. Gerçek ImageLoader ve Picasso, okhttp ve Volley'i de destekler.
Hafıza dostudur, önbellek daha küçüktür, resim varsayılan olarak ARGB888 yerine varsayılan RGB565'i kullanır
Dezavantajları:
Tanım zayıf, ancak ayarlanabilir
Fresk:
avantaj:
Resim, sanal makinenin yığın belleğinde değil, Android sisteminin anonim paylaşılan belleğinde depolanır, bu nedenle resim yüklemesi nedeniyle sıkıntıya neden olmaz ve ayrıca çöp toplayıcının Bitmap'i geri dönüştürmek için sık sık çağrılmasının neden olduğu arayüz gecikmesini azaltır ve performans daha yüksektir.
Görüntüleri bulanıktan net yüklemeye kadar destekleyen JPEG görüntülerin aşamalı olarak yüklenmesi
Resim, ImageView'da sadece resmin merkezinde değil, herhangi bir merkez noktasında görüntülenebilir.
JPEG görüntüsünün boyutu da sanal makinenin yığın belleğinde değil yerel olarak değiştirilir ve bu da OOM'yi azaltır
GIF resimlerinin görüntülenmesini çok iyi destekler
Dezavantajları:
Çerçeve büyüktür, bu da Apk'nin hacmini etkiler ve kullanımı zahmetlidir
Xutils
Bu çerçeve çok kapsamlıdır.Ağ istekleri, görüntü yükleme işlemleri, veri depolama ve görünüm açıklamaları için kullanılabilir.Bu çerçeveyi kullanmak çok uygundur ancak dezavantajları da çok açıktır.Bu projenin kullanılması projenin bu çerçeveye yanıt vermesine neden olacaktır. Bağımlılık çok ciddidir. Bu çerçevede bir sorun olduğunda, proje üzerinde büyük bir etkisi olacaktır.
OKhttp
Android geliştirmede, ağ istekleri yapmak için hazır api'yi doğrudan kullanabilirsiniz. Çalıştırmak için HttpClient, HttpUrlConnection kullanmaktır. Java ve Android programları için okhttp, senkronizasyonu ve asenkronizasyonu destekleyen yüksek performanslı bir http istek kitaplığını içerir ve okhttp ayrıca iş parçacığı havuzunu içerir, veri dönüşümünü içerir, parametrelerin kullanımını ve hata işlemeyi içerir. API kullanımı daha uygundur. Ancak bunu projede kullandığımızda, daha sorunsuz kullanabilmemiz için yine de kendi kendimize bir kapsülleme katmanı yapmamız gerekiyor.
Voleybol
Volley, resmi olarak Google tarafından piyasaya sürülen küçük ve mükemmel bir eşzamansız istek kitaplığıdır. Çerçeve oldukça genişletilebilir. HttpClient, HttpUrlConnection ve hatta OkHttp'yi destekler ve Volley ayrıca ImageLoader'ı da içerir, böylece isterseniz ona ihtiyacınız bile kalmaz Resim yükleme çerçevesini kullanın, ancak bu işlev bazı özel resim yükleme çerçeveleri kadar güçlü değildir.Basit ihtiyaçlar için kullanılabilir ve daha karmaşık ihtiyaçlar için özel bir resim yükleme çerçevesine hala ihtiyaç vardır. Volley ayrıca, büyük veriyi desteklememek gibi kusurlara da sahiptir, bu nedenle dosya yüklemek için uygun değildir. Bununla birlikte, Volley'in tasarımının asıl amacı, az miktarda veri içeren sık ağ talepleri için doğmuştur.
Güçlendirme
Retrofit, varsayılan olarak Square tarafından kapsüllenen OkHttp tabanlı RESTful ağ isteği çerçevesidir. RESTful, bir standart değil, popüler bir API tasarım stilidir. Retrofit'in kapsüllemesinin çok güçlü olduğu söylenebilir. Bir dizi tasarım modeli içerir. İstekleri doğrudan açıklamalar yoluyla yapılandırabilirsiniz. Farklı http istemcileri kullanabilirsiniz. Varsayılan http olsa da, verileri serileştirmek için farklı Json Dönüştürücüler kullanabilirsiniz. Retrofit + OkHttp + RxJava + Dagger2'yi kullanarak RxJava için destek sağlayın, nispeten modaya uygun bir çerçeve kümesi olduğu söylenebilir, ancak nispeten yüksek bir eşiğe ihtiyacı vardır.
Voleybolu VS OkHttp
Volley'in avantajı, paketlemenin daha iyi olmasıdır ve OkHttp'yi kullanmak için yeniden paketleme yapmak için yeterli yeteneğe sahip olmanız gerekir. OkHttp'nin avantajı daha yüksek performansında yatmaktadır OkHttp NIO ve Okio'ya dayandığından, performansta Volley'den daha hızlıdır. Hem IO hem de NIO Java'daki kavramlardır.Sabit diskten veri okursam, ilk yol, veriyi okuduktan sonra programın işleme devam etmesini beklemektir.Bu en basit olanı, aynı zamanda IO engelleme olarak da adlandırılır. Birincisi, siz kendinizinkini okursunuz, daha sonra program çalıştırılır ve veriler işlendiğinde beni bilgilendirirsiniz ve ardından geri aramayı işlersiniz. İkinci yöntem, engellemeyen NIO'dur, bu nedenle NIO kesinlikle IO'dan daha iyi performansa sahiptir ve Okio, Square tarafından IO ve NIO'ya dayalı olarak geliştirilen daha basit ve daha verimli bir veri akışı kitaplığıdır. Teoride, Volley ve OkHttp karşılaştırılırsa, Volley kullanmaya daha meyillidir, çünkü Volley ayrıca OkHttp'nin dahili olarak kullanılmasını destekler, bu nedenle OkHttp'nin performans avantajı ortadan kalkar ve Volley'in kendi paketinin kullanımı daha kolaydır ve daha iyi ölçeklenebilirliğe sahiptir.
OkHttp VS Güçlendirme
Hiç şüphe yok ki Retrofit, varsayılan olarak OkHttp'ye göre kapsüllenir, bu bakımdan bir karşılaştırma yoktur, Retrofit kesinlikle ilk tercihtir.
Voleybolu VS Güçlendirme
Bu iki kitaplık iyi bir şekilde paketlenmiştir, ancak Retrofit daha kapsamlı bir şekilde ayrıştırılmıştır, özellikle Retrofit 2.0, Jake önceki 1.0'ın mantıksız tasarımını birçok kez yeniden düzenlemiştir ve sorumluluklar daha alt bölümlere ayrılmıştır ve Retrofit varsayılan olarak OkHttp kullanır. , Performans da Volley'den daha üstündür ve projenizde RxJava kullanılıyorsa Retrofit kullanılmalıdır. Dolayısıyla, bu iki kitaplık ile karşılaştırıldığında, Retrofit'in daha fazla avantajı vardır.İki çerçevede ustalaşabiliyorsanız, önce Retrofit kullanılmalıdır. Ancak Retrofit eşiği Volley'den biraz daha yüksek, prensiplerini ve çeşitli kullanımlarını anlamak biraz çaba gerektiriyor, biraz bilginiz varsa, ticari projelerde Voleybolu kullanmanız önerilir.
Elbette gerçek durumunuza göre cevap verin, ne kadar çok olursa o kadar iyidir. Örneğin, ben bir tekil kalıbına aşinayım.
Ağ yükleme, öncelikli yükleme yok, yavaş hız, trafik kaybı
Yerel önbellek, ikinci öncelikli yükleme, hızlı
Önbellek, öncelikli yükleme, en hızlı
Android Uygulamasını ilk kez yüklediğinizde, resmi ağ etkileşimi yoluyla almalısınız.Bundan sonra resmi yerel SD karta ve dahili belleğe kaydedebiliriz.APP'yi çalıştırırken, dahili bellekteki resim önbelleğine erişmeye öncelik vereceğiz.Dahili bellekte yoksa, yerel olarak yükleyeceğiz. SD kartta resim ve sonunda ağa erişmeyi seçin
Simetrik şifreleme Yani, verileri şifrelemek ve şifresini çözmek için aynı anahtar kullanılır ve bu alandaki algoritma DES'dir.
Asimetrik şifreleme , Şifreleme ve şifre çözme farklı anahtarlar kullanır. Verileri göndermeden önce, bir genel anahtar ve özel bir anahtar oluşturmak için önce sunucuyla anlaşmanız gerekir.Genel anahtarla şifrelenen verilerin şifresi özel anahtarla çözülebilir ve bunun tersi de geçerlidir. Bu alandaki algoritma RSA'dır. Hem ssh hem de ssl tipik asimetrik şifrelemedir.
Sadece anlamanız değil, aynı zamanda onları iyi ifade edebilmeniz için de ihtiyacınız olan bazı şeyler vardır, böylece görüşmeyi yapan kişi, görüşmede sorulması gereken bir soru olan İşleyici mekanizması gibi. Bazı belirsiz noktalar var, belki sadece röportajda yaşıyor, gerçek işte hiç kullanmayacaksın ama ne olduğunu bilmelisin.
Altın, gümüş ve gümüş röportajları için en yoğun sezon olmak üzere. Herkes favori bir iş bulmak için bu fırsatı değerlendirmeyi umuyor. Ama ne olursa olsun, görüşmenin boyutu ne olursa olsun, görüşmeci tarafından istismar edilmekten kaçınmak istiyorsanız, görüşme sorularını en üst düzeye çıkarmalı ve kapsamlı bir hazırlık yapmalısınız.Elbette buna ek olarak barış zamanında da sağlam bir temel atmalısınız. Yani görüşmeyi yapan kişi kendi bilgisine nasıl girerse girsin, bununla başa çıkabilirsiniz ~
Röportaj: Tam bir röportaj için hazırlanmazsanız, bu zaman kaybı olur ve kendinize karşı sorumsuz olursunuz!
Golden 9th Silver ve 10th röportaj sezonunda acele edin ve röportajınız için hazırlanın!
Son olarak, buradaki editör, yukarıdaki teknik sistem şemalarıyla ilgili düzinelerce set koleksiyonunu paylaşıyor. Tencent, Toutiao, Ali, Meituan ve diğer şirketlerden 19 yıl içinde mülakat soruları , Teknik noktaları video ve PDF olarak düzenledi (aslında beklenenden çok daha fazla enerji harcadı), Bilgi bağlamı + birçok ayrıntı , Sınırlı alan nedeniyle, işte resim şeklinde bir parçası.
ve ayrıca Gelişmiş mimari teknolojisi gelişmiş zihin haritası, Android geliştirme röportajı özel materyalleri , Herkesin ileri seviyeyi geliştirmeyi öğrenmesine yardımcı olmak için gelişmiş gelişmiş çerçeve materyalleri ve ayrıca internette öğrenmek için materyal aramak için herkesin zamanından tasarruf sağlar ve ayrıca birlikte öğrenmek için arkadaşlarla paylaşılabilir.
[Android geliştirmeyle ilgili temel bilgilerle ilgili notlar]
[Android zihin haritası (beceri ağacı)]
[Android temel ileri teknoloji PDF belgesi, BAT görüşmesindeki gerçek soruların analizi]
[Android Advanced Architecture Video Öğrenme Kaynakları]
Android Tanıtım Videosu alıp öğrendikten sonra, daha da güçlü hale geliyor! BATJ fabrikasına girin ve benzeri (hazırlık)! Günümüzde İnternetin soğuk olduğu söyleniyor. Aslında, yanlış arabaya bindiğinizden ve daha az (beceri) giydiğinizden başka bir şey değil. Doğru arabaya binerseniz ve kendi teknik yeteneğiniz yeterince güçlüyse, şirketin değişim maliyeti yüksek olacaktır. Sadece son iş Curd'u ortadan kaldırmak için! Günümüzde piyasada genç programcılar akınına uğramaktadır. Bu eğitim seti 1-6 yaş arası Android geliştirme mühendislerine yöneliktir. Darboğaz dönemindedirler. Gelecek yıl maaş artışlarını aşmak isteyenler, ileri düzey Android orta ve kıdemli, mimarlar daha da önemlidir Sudaki bir balık gibi, çabuk alın!
[Android gelişmiş öğrenme videosu], [Android mülakat hilelerinin tam seti PDF], [Android geliştirme temel bilgi notları] özel mesajla [Android] ücretsiz olarak elde edilebilir!