Junior
Android uygulamalarında başlatma nasıl gerçekleşir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Android uygulamalarında başlatma çok aşamalı bir süreçtir ve hem işletim sistemi seviyesini hem de uygulama seviyesini kapsar.
Ana aşamalar:
- Uygulama sürecinin başlatılması: Uygulama bileşeni (Activity, Service, BroadcastReceiver vb.) ilk kez başlatıldığında, işletim sistemi bu uygulama için yeni bir süreç oluşturur, eğer henüz yoksa.
- DVM/ART başlatılması: Oluşturulan süreç içinde, Android sanal makinesi (şu anda esasen ART - Android Runtime) başlatılır. APK dosyasından uygulama sınıflarını yükler ve doğrular.
Application.onCreate()metodunun çalıştırılması: UygulamanızApplication'dan türeyen bir sınıfa sahipse, ilk olarak onun örneği oluşturulur veonCreate()metodu çağrılır. Bu, kütüphaneler, veritabanları, analizler gibi küresel başlatmalar için idealdir.// Application sınıfı örneği public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); // Kütüphanelerin, singletonların başlatılması MyDatabase.init(this); Analytics.init(this); } }- Uygulama bileşeninin oluşturulması:
Applicationnesnesinin başlatılmasından sonra, sistem istenen bileşeni (Activity, Service vb.) oluşturur. - Bileşenin yaşam döngüsü metodlarının çalıştırılması: Activity için
onCreate(),onStart(),onResume()çağrıları dizisi. Service için -onCreate(),onStartCommand()veyaonBind(). BroadcastReceiver için -onReceive(). Bu metodlarda, bileşene özgü başlatma gerçekleşir.// Activity içindeki onCreate örneği public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // UI başlatması // Activity'ye özgü başlatma setupRecyclerView(); loadDataFromJson(); } } - View/UI başlatması: UI bileşenleri (örneğin, Activity) için,
setContentView()çağrısından sonra, XML'den nesne oluşturma (inflation) ve View bileşenlerinin başlatılması gerçekleşir.
Önemli noktalar:
- Tembel başlatma: Genellikle, nesnelerin ilk kullanımlarına kadar oluşturulmasını ertelemek için kullanılır, böylece uygulama başlatma süresi hızlanır.
- Enjeksiyon Frameworkleri (DI): Dagger, Koin, Hilt gibi kütüphaneler, bağımlılıkların oluşturulmasını ve sağlanmasını otomatikleştirir, nesnelerin başlatılmasını ve bağlanmasını kolaylaştırır.
- Statik başlatıcılar: Sınıf belleğe ilk yüklendiğinde çalışır.
- Yapıcılar içinde başlatma: Sınıf örneği oluşturulurken gerçekleşir.
Uygulama seviyesinde çağrı sırası (başlangıçta açılan ilk Activity için):
Application.onCreate() -> Activity.onCreate() -> Activity.onStart() -> Activity.onResume()
Bu aşamaların anlaşılması, uygulama başlatma süresini optimize etmek ve kaynakları doğru yönetmek için kritiktir.