Sobes.tech
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:

  1. 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.
  2. 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.
  3. Application.onCreate() metodunun çalıştırılması: Uygulamanız Application'dan türeyen bir sınıfa sahipse, ilk olarak onun örneği oluşturulur ve onCreate() 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);
        }
    }
    
  4. Uygulama bileşeninin oluşturulması: Application nesnesinin başlatılmasından sonra, sistem istenen bileşeni (Activity, Service vb.) oluşturur.
  5. 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() veya onBind(). 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();
        }
    }
    
  6. 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.