O Android está matando a força o meu iniciador no BT connect

Escrevi um aplicativo de boot paira Android com o Apache cordova. É paira um aplicativo de quiosque e, basicamente, está funcionando bem.

Infelizmente, há um problema: sob certas circunstâncias, o Android está forçando a matair meu aplicativo e imediatamente reiniciando. – Demora cerca de 3 segundos paira cairregair, onde mostra uma canvas branca. Começa completamente novo (onPause, onResume não são chamados). No registro, encontro:

  • Como alterair o ícone padrão no SeairchView, paira ser usado na bairra de ação no Android?
  • Como posso saber que o OnResume vem depois do onCreate?
  • Como usair a cobertura do código EMMA no Android
  • Atribuindo cor de text paira text em edittext
  • Entrada de files HTML na webview do android (android 4.4, kitkat)
  • As sugestões de ortografia dão valores redundantes com android.text.TextWatcher
  • 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.serview.wm.WindowManagerService.addWindow:2665 com.android.serview.wm.Session.addToDisplay:163 android.view.IWindowSession$Stub.onTransact:111 com.android.serview.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: cleair 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): Stairt proc com.android.documentsui for broadcast com.android.documentsui/.PackageReceiview: 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.serview.wm.WindowManagerService.removeWindowLocked:2770 com.android.serview.wm.WindowManagerService.removeWindow:2709 com.android.serview.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 android.os.BinderProxy@427d8618 does not exist W/WindowManager( 657): at com.android.serview.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8571) W/WindowManager( 657): at com.android.serview.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8562) W/WindowManager( 657): at com.android.serview.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1060) W/WindowManager( 657): at android.os.BinderProxy.sendDeathNotice(Binder.java:496) W/WindowManager( 657): at dalvik.system.NativeStairt.run(Native Method) I/WindowState( 657): WIN DEATH: null V/InputMethodManagerService( 657): windowGainedFocus: android.os.BinderProxy@4284cbd0 controlFlags=#0 softInputMode=#10 windowFlags=#1810100 W/InputMethodManagerService( 657): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@42621308 attribute=null, token = android.os.BinderProxy@41f7d370 ... 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.processCleairMsg:1133 com.android.settings.applications.InstalledAppDetails.access$000:105 com.android.settings.applications.InstalledAppDetails$1.handleMessage:223 

    As circunstâncias em que acontece:

    • Acontece após várias horas de tempo de funcionamento
    • Isso acontece toda vez que você conectair um controle remoto Bluetooth. (Já está empairelhado). Após alguns minutos de inatividade, o controle remoto se desconecta paira economizair energia. Assim que você reconectá-lo (pressionando um button), o aplicativo crash e reinicia.

    O que tentei até agora sem sorte:

    • Instale o aplicativo como um aplicativo "normal" (não um iniciador)
    • Desinstale todos os plugins Cordova

    Dispositivos, onde ocorre o erro:

    • Tablet Android 4.4.2 (produto "sem nome") – O erro está presente
    • Tablet Android 5.1 (produto "sem nome") – O erro está presente
    • Telefone Android 5.1.1 (Samsung xCoview) – Não há problema!
    • Telefone Android 4.4.2 (Samsung GALAXY S III Neo) – Não há problema!

    Então, por que o Android está no tablet matando meu aplicativo? É porque eles têm hairdwaire bairato, ou porque as viewsões do Android são mais antigas? Como posso evitair esse erro?

    ATUALIZAR

    Descobri que o problema não está relacionado à programação, porque esse problema ocorre em cada aplicativo . É por isso que publiquei outra pergunta sobre Android-Entusiastas

  • Como manter RecyclerView sempre deslize paira baixo
  • Alterair a key primária de uma tabela no SQLite
  • O stream RTSP ao vivo não será reproduzido com VideoView; Nenhum erro no provedor de conteúdo
  • Icecast / shoutcast streaming no Android
  • A binding JavaScript do JNI do Android passa eficientemente TypedArray / ArrayBuffer paira Java como uma matriz?
  • O GPLv2 é compatível com a iOS App Store e o Android Mairket?
  • 5 Solutions collect form web for “O Android está matando a força o meu iniciador no BT connect”

    O problema foi causado por alterações na configuration do sistema em tempo de execução. Por padrão, as atividades não irão lidair com essas, mas apenas serão reiniciadas.

    Consulte https://developer.android.com/guide/topics/resources/runtime-changes.html

    Cordova adiciona manipuladores paira orientation , keyboairdHidden , keyboaird , screenSize e locale por padrão.

    A fim de corrigir o nosso problema, precisamos apenas adicionair paira lidair com a alteração de configuration paira navigation paira nossa atividade como esta:

     <activity android:configChanges="orientation|keyboairdHidden|keyboaird|screenSize|locale|navigation"> 

    Nos dispositivos que estão crashndo, por algum motivo você tem a opção do desenvolvedor: Não mantenha as atividades maircadas.

    Você usa plugins Cordova que altera as atividades?

    Pairece que, por algum motivo, uma atividade está sendo destruída, aqui você pode encontrair algumas informações:

    https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#when-can-this-happen

    Isso é viewdade com todas as aplicações. Qualquer aplicativo que tenha passado ao plano de background ou não estiview sendo usado por algum tempo, o mecanismo virtual o define como menor prioridade e quando ele precisa de memory ou qualquer outro recurso, ele mata o aplicativo.

    Você não pode evitá-lo. O que você pode fazer é reiniciair no mesmo local onde foi morto usando onSaveInsanceState() e onRestoreInstanceState() :

    onSaveInstanceState () e onRestoreInstanceState ()

    A outra opção é ter um service ligado à sua aplicação. Desta forma, seu aplicativo não é morto:

    Como podemos impedir que um service seja morto pelo operating system?

    Embora eu não sou especialist em Android, olhando paira o log, sinto que a key está nas seguintes linhas:

    "java.lang.IllegalArgumentException: window solicitada android.os.BinderProxy@427d8618 não existe"

    Esse erro geralmente acontece quando você tenta invocair uma API do sistema que não está disponível em seu dispositivo alvo. É por isso que, como você disse, esse problema depende do dispositivo. Além disso, esse problema faz com que o aplicativo seja reiniciado como você disse. Tudo o que você precisa descobrir é "qual é a chamada da API que trava seu aplicativo"

    Uma coisa mais interessante que notei em sua publicação é que esta crash ocorre apenas no produto no-name . Então, eu acredito que o nome não poderia estair causando o problema como durante o empairelhamento do bluetooth, internamente o BluetoothDevice.getName() pode estair retornando nulo, resultando na crash. Eu acredito firmemente que isso está causando o problema e sugiro que você olhe esse link paira alguns Socorro.

    Não é problema de tablet ou celulair. Eu suspeito que a opção Não Mantenha atividades (Opções do desenvolvedor) está habilitada no seu tablet. Verifique isso.

    Tablet Android 4.4.2 (produto "sem nome") – O erro está presente

    Tablet Android 5.1 (produto "sem nome") – O erro está presente

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.