Fix startup crash: Delay offline manager initialization by 500ms

- Move init calls from onCreate() to Handler.postDelayed()
- Create OfflineInitRunnable inner class for delayed execution
- Add try-catch wrapper for safety
- Add detailed logging for debugging

This fixes the crash caused by offline managers trying to access
Context/SharedPreferences before Android system fully initializes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-18 21:25:51 -08:00
parent aa65c34683
commit 8f2e2f78f3
2 changed files with 117 additions and 8 deletions

View File

@@ -6,6 +6,7 @@
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/firemint/realracing/MainActivity$OfflineInitRunnable;,
Lcom/firemint/realracing/MainActivity$Message;,
Lcom/firemint/realracing/MainActivity$KeyEventRunnable;,
Lcom/firemint/realracing/MainActivity$MessageExecuteCallback;
@@ -2237,17 +2238,17 @@
:cond_0
invoke-static {p0}, Lcom/firemint/realracing/AppProxy;->SetActivity(Landroid/app/Activity;)V
# Initialize LocalSaveManager for offline mode
invoke-static {p0}, Lcom/firemint/realracing/LocalSaveManager;->initSaveFile(Landroid/content/Context;)V
# Delayed initialization of offline managers (500ms delay to prevent crash)
# This allows Android system to fully initialize Context, SharedPreferences, etc.
iget-object v0, p0, Lcom/firemint/realracing/MainActivity;->handler:Landroid/os/Handler;
# Initialize OfflineModeManager
invoke-static {p0}, Lcom/firemint/realracing/OfflineModeManager;->init(Landroid/content/Context;)V
new-instance v1, Lcom/firemint/realracing/MainActivity$OfflineInitRunnable;
# Initialize OfflineCurrencyManager (sets unlimited currency for offline)
invoke-static {p0}, Lcom/firemint/realracing/OfflineCurrencyManager;->init(Landroid/content/Context;)V
invoke-direct {v1, p0}, Lcom/firemint/realracing/MainActivity$OfflineInitRunnable;-><init>(Lcom/firemint/realracing/MainActivity;)V
# Initialize OfflineEventsManager (enables all special events)
invoke-static {p0}, Lcom/firemint/realracing/OfflineEventsManager;->init(Landroid/content/Context;)V
const-wide/16 v2, 0x1f4
invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
.line 353
invoke-virtual {p0}, Landroid/app/Activity;->getApplication()Landroid/app/Application;