Intereting Posts
Как нарисовать гладкую линию через множество точек с использованием кривых Безье? Каковы новые возможности библиотеки поддержки Android Design и как использовать ее Snackbar? Доступ к приложениям Android (для людей с ограниченными возможностями) с помощью PhoneGap Как изменить текущую тему во время выполнения в Android Установка ширины SeekBar для создания эффекта «проведите по экрану» Android Studio 3.0 Beta 1: не удалось разрешить: com.android.support:multidex:1.0.2 Может ли textview иметь буквы разных цветов? Тестирование на Android-устройство – лучшая практика, когда ссылки на ссылки на Android-классы Принудительное приложение для обновления, когда новая версия приложения доступна в магазине воспроизведения Android. Android.os.TransactionTooLargeException on Nougat Как избежать нескольких экземпляров одной и той же Деятельности? Образцы / учебники для платформы DRM в Android Панель действий Кнопка «Назад» не работает Google Analytics V4 с устройствами Amazon Как отображать прозрачную активность по другому действию без удаления предыдущей активности

Android убивает мою пусковую установку на BT connect

Я написал приложение для Android с Apache cordova. Это приложение для киосков, и в основном оно работает нормально.

К сожалению, есть проблема: при определенных обстоятельствах Android сильно убивает мое приложение и сразу же перезапускает его. – Загрузка занимает около 3 секунд, где отображается белый экран. Он запускается совершенно новым (onPause, onResume не вызывается). В журнале я нахожу:

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 android.os.BinderProxy@427d8618 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: 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.processClearMsg:1133 com.android.settings.applications.InstalledAppDetails.access$000:105 com.android.settings.applications.InstalledAppDetails$1.handleMessage:223 

Обстоятельства, когда это происходит:

  • Это происходит после нескольких часов безотказной работы
  • Это происходит каждый раз, когда вы подключаете пульт дистанционного управления Bluetooth. (Он уже спарен). После нескольких минут простоя пульт дистанционного управления отключается для экономии энергии. Как только вы снова подключите его (нажав кнопку), приложение выйдет из строя и перезагрузится.

То, что я пробовал до сих пор без везения:

  • Установите приложение как «нормальное» приложение (не пусковое устройство)
  • Удалите каждый плагин cordova

Устройства, где возникает ошибка:

  • Android 4.4.2 планшет (продукт «без названия») – присутствует ошибка
  • Android 5.1 таблетка (продукт «без названия») – присутствует ошибка
  • Android 5.1.1 телефон (Samsung xCover) – Без проблем !!
  • Android 4.4.2 телефон (Samsung GALAXY S III Neo) – Без проблем !!

Итак, почему Android на планшетах убивает мое приложение? Это потому, что у них дешевое оборудование, или потому, что версии для Android старше? Как я могу предотвратить эту ошибку?

ОБНОВИТЬ

Я узнал, что проблема не связана с программированием, потому что эта проблема возникает в каждом приложении . Вот почему я разместил еще один вопрос об Android-энтузиастах

Solutions Collecting From Web of "Android убивает мою пусковую установку на BT connect"

Проблема была вызвана изменениями конфигурации системы во время выполнения. По умолчанию действия не будут обрабатываться, но будут перезагружаться.

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

По умолчанию screenSize добавляет обработчики для orientation , keyboardHidden , keyboard , screenSize и locale .

Чтобы исправить нашу проблему, нам просто нужно было добавить для обработки изменения конфигурации для navigation в нашу деятельность следующим образом:

 <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|navigation"> 

В устройствах, которые сбой, по какой-то причине у вас есть опция разработчика: не сохраняйте отмеченные действия.

Используете ли вы плагины cordova, которые меняют действия?

Похоже, что по какой-то причине деятельность разрушается, здесь вы можете найти некоторую информацию:

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

Это верно для всех приложений. Любое приложение, которое ушло на задний план или не используется какое-то время, виртуальный движок устанавливает его более низкий приоритет, а когда ему нужна память или какой-либо другой ресурс, он убивает приложение.

Вы не можете этого избежать. То, что вы можете сделать, это перезапустить в том же месте, где оно было убито с помощью onSaveInsanceState() и onRestoreInstanceState() :

OnSaveInstanceState () и onRestoreInstanceState ()

Другой вариант – иметь сервис, прикрепленный к вашему приложению. Таким образом, ваше приложение не будет убито:

Как мы можем не допустить, чтобы Служба была убита ОС?

Хотя я не специалист в Android, глядя на журнал, я чувствую, что ключ лежит в следующих строках:

"Java.lang.IllegalArgumentException: Запрошенное окно android.os.BinderProxy@427d8618 не существует"

Эта ошибка обычно возникает при попытке вызвать системный API, который недоступен на вашем целевом устройстве. Вот почему, как вы сказали, эта проблема зависит от устройства. Также эта проблема заставляет приложение перезагружаться, как вы сказали. Все, что вам нужно выяснить, это «что такое вызов API, который приводит к сбою вашего приложения»

Еще одна интересная вещь, которую я заметил в вашем посте, заключается в том, что этот сбой происходит только в no-name продукте. Поэтому я считаю, что no-name может просто вызвать проблему, так как во время соединения Bluetooth, внутренне BluetoothDevice.getName() может возвращать значение null, приводящее к сбою. Я уверен, что это вызывает проблему и предлагает вам посмотреть эту ссылку для некоторых Помогите.

Это не проблема с планшетами или мобильными устройствами. Я подозреваю, что в вашем планшете включен параметр « Не держать действия» (параметры разработчика). Пожалуйста, проверьте это.

Android 4.4.2 планшет (продукт «без названия») – присутствует ошибка

Android 5.1 таблетка (продукт «без названия») – присутствует ошибка