Versiyon: 3.1 | Guncelleme: 2026-05-18
PostPaid ana sayfa acildiginda 3 paralel API cagrilir, tumu tamamlaninca (veya timeout olunca) AOM MVA call tetiklenir. Toplam sure cihaza gore 794ms - 6913ms arasi degisir.
Ozet Sureler:
| Cihaz | Toplam Sure | AOM Request |
|---|---|---|
| Yuksek RAM (Device B) | 794ms | 335ms |
| Orta RAM (Device C) | 1724ms | 615ms |
| Dusuk RAM (Device A) | 6913ms | 4395ms |
+--------------------------------------------+
| Yanimda App |
| |
| +--------------------------------------+ |
| | PostPaidHomeActivity (UI) | |
| | - LiveData observe | |
| | - setTargetTimeoutTimer (2s guard) | |
| | - AOM_MVA confirmation | |
| +------------------+-------------------+ |
| v |
| +--------------------------------------+ |
| | PostPaidHomeViewModel | |
| | - isTargetRun (guard flag) | |
| | - isAllTargetDataEnabled() | |
| | - triggerTargetTimeout | |
| +------------------+-------------------+ |
| v |
| +--------------------------------------+ |
| | HomePageResponseState (State) | |
| | - postValue() [thread-safe bridge] | |
| +------------------+-------------------+ |
| v |
| +--------------------------------------+ |
| | TealiumHelper (SDK Wrapper) | |
| | - trackView() - HTTP POST | |
| | - homeRemoteCommand callback | |
| +------------------+-------------------+ |
| v |
| +--------------------------------------+ |
| | Tealium SDK | |
| +------------------+-------------------+ |
+---------------------+----------------------+
v
+---------------------+
| Tag Management |
| Server |
+---------------------+
ViewModel init'te 3 API ayni anda tetiklenir:
| API | Gorev |
|---|---|
| getAppIcons | Icon change response |
| getMainPageOffer | MCCM main page offer |
| setTobiWelcomeMessage | Tobi welcome message |
Her API response geldiginde ViewModel'e postValue yapilir.
Iki yoldan biri ilk olan kazanir:
Yol A - Normal: Tum API'ler tamamlanir (isAllTargetDataEnabled = true)
Yol B - Timeout: 2s dolar, API'ler hala gelmemis
| # | API | Tip | Tetikleyici | Timeout Guard |
|---|---|---|---|---|
| 1 | getAppIcons | REST | ViewModel init | 2s timer |
| 2 | getMainPageOffer | REST | ViewModel init | 2s timer |
| 3 | setTobiWelcomeMessage | REST | ViewModel init | 2s timer |
| 4 | fetch_aom (AOM MVA CALL) | Tealium trackView | Tum API complete VEYA timeout | - |
| 5 | homeRemoteCommand | Tealium Remote Cmd | Server response | - |
| 6 | aom_mva (AOM MVA RESPONSE) | Tealium trackView | Remote cmd response | - |
0ms 350ms 1813ms 1825ms 2518ms 6913ms
| | | | | |
Init APIs Icons Tobi AOM Call AOM Response
Start +Offer Done
| Metric | Sure |
|---|---|
| getAppIcons | 1463ms |
| getMainPageOffer | 1474ms |
| setTobiWelcomeMessage | 1473ms |
| AOM request | 4395ms |
| Toplam | 6913ms |
0ms 33ms 289ms 453ms 459ms 794ms
| | | | | |
Init APIs Icons Tobi AOM AOM
Start +Offer Done Call Response
| Metric | Sure |
|---|---|
| getAppIcons | 256ms |
| getMainPageOffer | 275ms |
| setTobiWelcomeMessage | 420ms |
| AOM request | 335ms |
| Toplam | 794ms |
0ms 485ms 522ms 890ms 1084ms 1109ms 1724ms
| | | | | | |
App Dash APIs Icons Tobi AOM AOM
Init Init Start +Offer Done Call Response
| Metric | Sure |
|---|---|
| app_to_dashboard_ms | 485ms |
| getAppIcons | 368ms |
| getMainPageOffer | 368ms |
| setTobiWelcomeMessage | 562ms |
| AOM request | 615ms |
| Toplam (dashboard journey) | 1239ms |
| Toplam (app init) | 1724ms |
| Metric | Dusuk RAM | Orta RAM | Yuksek RAM |
|---|---|---|---|
| API baslangic gecikmesi | 350ms | 37ms | 33ms |
| getAppIcons | 1463ms | 368ms | 256ms |
| getMainPageOffer | 1474ms | 368ms | 275ms |
| setTobiWelcomeMessage | 1473ms | 562ms | 420ms |
| AOM request | 4395ms | 615ms | 335ms |
| Toplam | 6913ms | 1724ms | 794ms |
| Timeout (2s) tetiklendi mi? | EVET | Hayir | Hayir |
Akis:
Guard Mekanizmasi:
isTargetRun = false (baslangic)
|
+--> Normal path tetiklerse -> isTargetRun = true -> Timer artik skip
|
+--> Timer tetiklerse -> isTargetRun = true -> Observer artik skip
| Ozellik | Deger |
|---|---|
| Event type | view |
| Tetikleyici | Tum API response VEYA 2s timeout |
| Guard | isTargetRun == false |
| Data | getTealiumData() veya null |
| Ozellik | Deger |
|---|---|
| Event type | view |
| Tetikleyici | Remote command response |
| Data | page_name, session_id, container_name, offer JSON, source |
| Timer | Sure | Kaynak | Amac | Fail Davranisi |
|---|---|---|---|---|
| setTargetTimeoutTimer | 2000ms (default) | ConfigManager.mccmTobiTargetData.timeoutDuration | API'ler gelmezse zorla AOM call | Partial data veya null ile devam |
| SDK Init | ~33-485ms | Jetpack Startup | SDK hazir olmasi | AOM call gecikir |
| fetch_aom Network | 8s | Tealium SDK | Server response | Timeout, no response |
| Target Offer Delay | 0-1000ms | Remote config | UI settle | Hemen goster |
setTargetTimeoutTimer detay:
ConfigManager.getConfig().mccmTobiTargetData.timeoutDurationHomeConstants.TARGET_DELAY = 2000LRace condition yonetimi: isTargetRun flag ile timer ve observer arasinda sadece ilk tetiklenen kazanir
Bottleneck dusuk RAM: API response'lar 1.4-1.5s suruyor (timeout tetiklenir)
Bottleneck yuksek/orta RAM: setTobiWelcomeMessage en yavas API (420-562ms)
Timeout onemli: Dusuk RAM cihazlarda 2s timeout olmasa AOM call 2.5s'de olur (API'ler 1.8s'de tamamlaniyor)
AOM request sureleri: 335ms (hizli) - 4395ms (yavas) arasi - buyuk fark network/server load kaynakli
Thread-safe: Remote command [IO] - postValue() - Observer [Main]
Priority: Tealium > API (remote command data varsa override eder)
Dashboard Init -> setTobiWelcomeMessage (562ms) -> AOM Call (615ms) = 1177ms
Dashboard Init -> Timer (2000ms) -> AOM Call (4395ms) = 6395ms
Bagimlilik Grafigi:
Dashboard Init
|
+---> setTargetTimeoutTimer(2s) ----timeout---+
| |
+---> getAppIcons --------+ |
+---> getMainPageOffer ---+-- isAllTarget? ---+---> trackAomCall (ilk gelen kazanir)
+---> setTobiWelcomeMsg --+ |
|
isTargetRun = true <--------------------------+