Middle+
Tətbiqin yavaş soyuq işə başlamasının səbəblərini har yerdə axtarardınız?
sobes.tech Süni İntellekt
AI-dan cavab
- Obyektlərin başlanması:
Application.onCreate()və ya ilk Activity-də bahalı əməliyyatlar, məsələn, məlumatların yüklənməsi, kitabxanaların başlanması. - Faylların oxunması: İşə salınarkən diskdə böyük həcmdə məlumatların oxunması.
- Verilənlər bazası əməliyyatları: Yavaş sorğular və ya işə salınarkən çoxsaylı verilənlər bazası əməliyyatları.
- Resursların yüklənməsi: Resursların çox yüklənməsi və ya optimallaşdırılmaması (şəkillər, XML).
- Şəbəkə: İşə salınarkən əsas axında sinxron şəbəkə sorğuları.
- JIT-kompilyasiya: ART-in ilk işə salınmada JIT-kompilyasiya üçün sərf etdiyi vaxt.
- Layout-inflation: İlk Activity-də mürəkkəb və ya dərin View hierarxiyası, uzun vaxt alır.
- Əsas axını bloklama: İşə salınarkən əsas axında uzun müddətli əməliyyatlar.
Alətlər:
- Android Profiler (CPU Profiler, Sistem İzləri).
- Startup Profiler (sinifin başlanma vaxtını ölçmək üçün xüsusi alət).
- Traceview/Systrace (funksiya çağırışlarının detallı analizi üçün).
- logcat (şübhəli loglar və ya səhvləri tapmaq üçün).
adb shell am start -W <paket_adi>/<aktivlik_adi>(ümumi işə salma vaxtını ölçmək üçün).
// Vaxtın ölçülməsi nümunəsi
class MyApplication : Application() {
override fun onCreate() {
val startTime = System.currentTimeMillis()
super.onCreate()
// Uzun çəkə biləcək başlanğıc:
// MyDatabase.initialize(this)
// SomeLibrary.setup()
// LoadInitialData.execute()
val endTime = System.currentTimeMillis()
Log.d("StartupTime", "Application onCreate ${endTime - startTime} ms çəkdi")
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
val startTime = System.currentTimeMillis()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// UI və ya məlumat ilə əlaqəli bahalı əməliyyatlar
// setupRecyclerView()
// loadContentFromNetwork()
val endTime = System.currentTimeMillis()
Log.d("StartupTime", "MainActivity onCreate ${endTime - startTime} ms çəkdi")
}
}
İlk Activity-nin onCreate, onStart, onResume metodlarına və Application.onCreate()-ə diqqət yetirin.