Ho scritto un'app launcher per Android con Apache cordova. È per un'applicazione simile a un chiosco e in fondo sta funzionando bene.Android sta uccidendo forza il mio launcher su BT connect
Sfortunatamente c'è un problema: In determinate circostanze Android sta forzando la mia app e immediatamente riavviandola. - Ci vogliono circa 3 secondi per caricare, dove mostra uno schermo bianco. Inizia completamente nuovo (onPause, onResume non viene chiamato). Nel registro trovo:
V/WindowManager( 657): Changing focus from Window{42544288 u0 com.android.settings/com.android.settings.SubSettings} to Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings} Callers=com.android.server.wm.WindowManagerService.addWindow:2665 com.android.server.wm.Session.addToDisplay:163 android.view.IWindowSession$Stub.onTransact:111 com.android.server.wm.Session.onTransact:126
I/WindowManager( 657): Gaining focus: Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings}
...
I/ActivityManager( 657): Force stopping com.myapp.name appid=10119 user=0: clear data
I/ActivityManager( 657): Killing 2639:com.myapp.name/u0a119 (adj 7): stop com.myapp.name
I/ActivityManager( 657): Force finishing activity ActivityRecord{42542218 u0 com.myapp.name/.MainActivity t2}
V/ActivityManager( 657): Broadcast: Intent { act=android.intent.action.PACKAGE_RESTARTED dat=package:com.myapp.name flg=0x10 (has extras) } ordered=false userid=0 callerApp=null
V/ActivityManager( 657): Broadcast: Intent { act=android.intent.action.PACKAGE_DATA_CLEARED dat=package:com.myapp.name flg=0x10 (has extras) } ordered=false userid=0 callerApp=null
I/NotificationService( 657): queryReplace=false
I/ActivityManager( 657): Start proc com.android.documentsui for broadcast com.android.documentsui/.PackageReceiver: pid=2740 uid=10036 gids={50036}
V/WindowManager( 657): Changing focus from Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings EXITING} to Window{42544288 u0 com.android.settings/com.android.settings.SubSettings} Callers=com.android.server.wm.WindowManagerService.removeWindowLocked:2770 com.android.server.wm.WindowManagerService.removeWindow:2709 com.android.server.wm.Session.remove:182 android.view.IWindowSession$Stub.onTransact:197
...
I/WindowManager( 657): Gaining focus: Window{42544288 u0 com.android.settings/com.android.settings.SubSettings}
I/WindowManager( 657): Losing focus: Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings EXITING}
D/DisplayManagerService( 657): Display listener for pid 2639 died.
D/WifiService( 657): Client connection lost with reason: 4
I/WindowState( 657): WIN DEATH: Window{424b0f20 u0 com.myapp.name/com.myapp.name.MainActivity}
W/WindowManager( 657): Force-removing child win Window{424c4168 u0 SurfaceView} from container Window{424b0f20 u0 com.myapp.name/com.myapp.name.MainActivity}
W/WindowManager( 657): Failed looking up window
W/WindowManager( 657): java.lang.IllegalArgumentException: Requested window [email protected] does not exist
W/WindowManager( 657): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8571)
W/WindowManager( 657): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8562)
W/WindowManager( 657): at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1060)
W/WindowManager( 657): at android.os.BinderProxy.sendDeathNotice(Binder.java:496)
W/WindowManager( 657): at dalvik.system.NativeStart.run(Native Method)
I/WindowState( 657): WIN DEATH: null
V/InputMethodManagerService( 657): windowGainedFocus: [email protected] controlFlags=#0 softInputMode=#10 windowFlags=#1810100
W/InputMethodManagerService( 657): Window already focused, ignoring focus gain of: [email protected] attribute=null, token = [email protected]
...
V/SettingsProvider( 657): call(system:anr_debugging_mechanism) for 0
W/ContextImpl(2336): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1219 android.content.ContextWrapper.sendBroadcast:365 com.android.settings.applications.InstalledAppDetails.processClearMsg:1133 com.android.settings.applications.InstalledAppDetails.access$000:105 com.android.settings.applications.InstalledAppDetails$1.handleMessage:223
Le circostanze quando succede:
- Succede dopo diverse ore di uptime
- Succede ogni volta si collega un telecomando Bluetooth. (È già abbinato). Dopo alcuni minuti di inattività, il telecomando si disconnette per risparmiare energia. Non appena lo ricolleghi (premendo un pulsante), l'app si arresta e si riavvia.
Quello che ho provato finora senza fortuna:
- installare l'applicazione come applicazione "normale" (non un lanciatore)
- Disinstallare tutti i plugin Cordova
Dispositivi, dove si verifica l'errore:
- Android 4.4.2 tablet ("no-name" del prodotto) - L'errore è presente
- Android 5.1 tablet ("nome-no" del prodotto) - L'errore è presente
- Android 5.1.1 del telefono (Samsung xCover) - Nessun problema !!
- Telefono Android 4.4.2 (Samsung GALAXY S III Neo) - Nessun problema !!
Quindi perché l'Android sui tablet uccide la mia app? È perché hanno hardware a basso costo, o perché le versioni di Android sono più vecchie? Come posso prevenire questo bug?
UPDATE
ho scoperto, che il problema non è programmazione-correlato, perché questo problema si verifica su tutte le app . Ecco perché ho pubblicato un'altra domanda su Android-Enthusiasts
Anche se non im un esperto di Android, guardando il registro mi sento la chiave si trova nelle seguenti righe: "java.lang.IllegalArgumentException: finestra richiesta [email protected] non esiste "Questo errore si verifica in genere quando si tenta di richiamare un'API di sistema che non è disponibile sul dispositivo di destinazione. Ecco perché, come hai detto, questo problema dipende dal dispositivo. fa sì che l'applicazione si riavvii come hai detto tu. Tutto quello che devi capire è "che cos'è quella chiamata API che blocca la tua app." Spero che abbia senso – Gandhi
@IngoAlbers \t Anche se non sono un esperto di Android, guardando il registro Sento che la chiave sta nelle seguenti righe: "java.lang.IllegalArgumentException: finestra richiesta [email protected] non esiste" Questo errore si verifica in genere quando si tenta di richiamare un'API di sistema che non è disponibile sul dispositivo di destinazione Ecco perché, come hai detto, questo problema dipende dal dispositivo. Inoltre, questo problema fa sì che l'applicazione si riavvii come hai detto. Tutto ciò che devi capire è "che cos'è quella chiamata API? che blocca la tua app ". Spero che abbia senso. – Gandhi
Grazie per il tuo commento. Il problema è che non invoco alcuna chiamata API di sistema. Il sistema lo fa da solo. Forse posso cambiarlo in qualche file di configurazione del sistema? (root è disponibile), ma non so dove guardare e cosa cambiare. –