Виджет Android-приложения вылетает из лаунчера через неопределенное время

У меня действительно странная проблема с моим виджетом приложения. Нет проблем с перетаскиванием его на домашний экран, конфигурацией или даже функциональностью. Все работает так, как ожидалось.

Но после произвольного промежутка времени мой лаунчер начинает падать. Я проводил дни за разом, не испытывая этого, а иногда всего лишь минуты. На самом деле, похоже, невозможно восстановить его, не открыв экран «Последние приложения», не найдя Play Store или «Настройки» и просто удалив приложение.

Имя пакета моего приложения — org.thecosmicfrog.luasataglance. Почти все, что делает виджет, обрабатывается службой, которая создается, когда пользователь касается части виджета.

Виджет находится по адресу: org.thecosmicfrog.luasataglance.widget.StopForecastWidget

Служба находится по адресу: org.thecosmicfrog.luasataglance.service.WidgetListenerService

Ниже я прикрепил вывод LogCat сразу после сбоя. Вы можете увидеть, где программа запуска Google Now начинает давать сбой (com.google.android.googlequicksearchbox), но это влияет и на другие программы запуска:

10-04 03:28:07.769 I/GEL     (1330): handleIntent(Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL })
10-04 03:28:07.829 D/AudioManager(1244): AudioManager dispatching onAudioFocusChange(-3) for android.media.AudioManager@1fa1d3d8kom@37833331
10-04 03:28:07.867 D/Launcher(1330): bindAppWidget: AppWidget(id=153)
10-04 03:28:07.871 D/Launcher(1330): bindAppWidget: id=153 belongs to component ComponentInfo{org.thecosmicfrog.luasataglance/org.thecosmicfrog.luasataglance.widget.StopForecastWidget}
10-04 03:28:07.931 I/art     (2036): Explicit concurrent mark sweep GC freed 22778(1189KB) AllocSpace objects, 0(0B) LOS objects, 38% free, 25MB/41MB, paused 2.368ms total 104.811ms
10-04 03:28:07.971 I/WindowManager(789): Screen frozen for +445ms due to Window{1d871ef2 u0 StatusBar}
10-04 03:28:08.308 E/JavaBinder(1330): !!! FAILED BINDER TRANSACTION !!!
10-04 03:28:08.315 D/AndroidRuntime(1330): Shutting down VM
10-04 03:28:08.422 I/MediaFocusControl(789):  AudioFocus  abandonAudioFocus() from android.media.AudioManager@330313aa
10-04 03:28:08.424 I/ActivityManager(789): Start proc 23910:com.google.android.googlequicksearchbox:crash_report/u0a24 for service com.google.android.googlequicksearchbox/com.google.android.apps.gsa.silentfeedback.SilentFeedbackService
10-04 03:28:08.424 D/AudioManager(1244): AudioManager dispatching onAudioFocusChange(1) for android.media.AudioManager@1fa1d3d8kom@37833331
--------- beginning of crash
10-04 03:28:08.425 E/AndroidRuntime(1330): FATAL EXCEPTION: main
10-04 03:28:08.425 E/AndroidRuntime(1330): Process: com.google.android.googlequicksearchbox, PID: 1330
10-04 03:28:08.425 E/AndroidRuntime(1330): java.lang.RuntimeException: Unable to resume activity {com.google.android.googlequicksearchbox/com.google.android.launcher.GEL}: java.lang.RuntimeException: system server dead?
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2986)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.os.Handler.dispatchMessage(Handler.java:102)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.os.Looper.loop(Looper.java:135)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.ActivityThread.main(ActivityThread.java:5254)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at java.lang.reflect.Method.invoke(Native Method)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at java.lang.reflect.Method.invoke(Method.java:372)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:115)
10-04 03:28:08.425 E/AndroidRuntime(1330): Caused by: java.lang.RuntimeException: system server dead?
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:323)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.launcher3.LauncherAppWidgetHost.createView(LauncherAppWidgetHost.java:116)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.launcher3.Launcher.bindAppWidget(Launcher.java:3950)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.launcher3.Workspace.reinflateWidgetsIfNecessary(Workspace.java:1124)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.launcher3.Launcher.onResume(Launcher.java:1044)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:650)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.launcher3.Launcher.onResume(<Xposed>)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.Activity.performResume(Activity.java:6076)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975)
10-04 03:28:08.425 E/AndroidRuntime(1330):  ... 10 more
10-04 03:28:08.425 E/AndroidRuntime(1330): Caused by: android.os.TransactionTooLargeException
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.os.BinderProxy.transactNative(Native Method)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.os.BinderProxy.transact(Binder.java:496)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.getAppWidgetViews(IAppWidgetService.java:538)
10-04 03:28:08.425 E/AndroidRuntime(1330):  at android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:321)
10-04 03:28:08.425 E/AndroidRuntime(1330):  ... 20 more
10-04 03:28:08.470 W/ActivityManager(789):   Force finishing activity 1 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL
10-04 03:28:08.517 D/OpenGLRenderer(789): Use EGL_SWAP_BEHAVIOR_PRESERVED: true
10-04 03:28:08.518 D/Atlas   (789): Validating map...
10-04 03:28:08.519 I/Xposed  (23910): GB:ModLauncher: Couldn't find dynamic grid. Incompatible Google Search?
10-04 03:28:08.538 W/XPrivacy(23910): Hooking package=com.google.android.googlequicksearchbox
10-04 03:28:08.575 I/OpenGLRenderer(789): Initialized EGL, version 1.4
10-04 03:28:08.603 D/OpenGLRenderer(789): Enabling debug mode 0
10-04 03:28:08.847 I/ActivityManager(789): Killing 19499:com.emmaguy.todayilearned/u0a92 (adj 15): empty #17
10-04 03:28:08.972 W/ActivityManager(789): Activity pause timeout for ActivityRecord{22486d04 u0 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL t5986 f}

Позже в журнале есть больше вывода, связанного с виджетами приложений, которые также могут быть полезны:

10-04 03:28:15.661 I/Process (1330): Sending signal. PID: 1330 SIG: 9
10-04 03:28:15.691 I/WindowState(789): WIN DEATH: Window{389c7f61 u0 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL}
10-04 03:28:15.737 I/ActivityManager(789): Process com.google.android.googlequicksearchbox (pid 1330) has died
10-04 03:28:15.739 W/ActivityManager(789): Scheduling restart of crashed service com.google.android.googlequicksearchbox/com.google.android.apps.gsa.reflection.ReflectionService in 1000ms
10-04 03:28:15.745 W/IInputConnectionWrapper(1244): showStatusIcon on inactive InputConnection
10-04 03:28:16.176 W/ResourceType(952): No package identifier when getting value for resource number 0x00000000
10-04 03:28:16.350 W/ResourceType(952): No package identifier when getting value for resource number 0x00000000
10-04 03:28:16.350 W/PackageManager(952): Failure retrieving resources for org.thecosmicfrog.luasataglance: Resource ID #0x0
10-04 03:28:16.861 D/audio_hw_primary(188): out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
10-04 03:28:17.657 D/AndroidRuntime(24056): >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
10-04 03:28:17.670 D/AndroidRuntime(24056): CheckJNI is OFF
10-04 03:28:17.954 I/ActivityManager(789): Start proc 24076:eu.chainfire.supersu/u0a84 for broadcast eu.chainfire.supersu/.NativeAccessReceiver
10-04 03:28:17.984 W/ResourceType(952): No package identifier when getting value for resource number 0x00000000
10-04 03:28:17.984 W/PackageManager(952): Failure retrieving resources for com.google.android.youtube: Resource ID #0x0
10-04 03:28:18.066 W/XPrivacy(24076): Hooking package=eu.chainfire.supersu
10-04 03:28:18.570 D/AndroidRuntime(24137): >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
10-04 03:28:18.574 D/AndroidRuntime(24137): CheckJNI is OFF
10-04 03:28:18.565 W/app_process32_x(24137): type=1400 audit(0.0:95): avc: denied { write } for name="system@[email protected]" dev="mmcblk0p28" ino=491525 scontext=u:r:shell:s0 tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file
10-04 03:28:18.709 D/AndroidRuntime(24137): Calling main entry com.android.commands.am.Am
10-04 03:28:18.746 D/AndroidRuntime(24137): Shutting down VM
10-04 03:28:18.855 W/app_process32_x(24167): type=1400 audit(0.0:96): avc: denied { write } for name="system@[email protected]" dev="mmcblk0p28" ino=491525 scontext=u:r:shell:s0 tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file
10-04 03:28:18.859 D/AndroidRuntime(24167): >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
10-04 03:28:18.862 D/AndroidRuntime(24167): CheckJNI is OFF
10-04 03:28:18.985 D/AndroidRuntime(24167): Calling main entry com.android.commands.am.Am
10-04 03:28:19.013 D/AndroidRuntime(24167): Shutting down VM
10-04 03:28:19.394 E/AppWidgetServiceImpl(789): Widget host dead: HostId{user:0, app:10024, hostId:1024, pkg:com.google.android.googlequicksearchbox}
10-04 03:28:19.394 E/AppWidgetServiceImpl(789): android.os.DeadObjectException
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at android.os.BinderProxy.transactNative(Native Method)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at android.os.BinderProxy.transact(Binder.java:496)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.internal.appwidget.IAppWidgetHost$Stub$Proxy.updateAppWidget(IAppWidgetHost.java:123)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.server.appwidget.AppWidgetServiceImpl.handleNotifyUpdateAppWidget(AppWidgetServiceImpl.java:1638)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.server.appwidget.AppWidgetServiceImpl.access$1200(AppWidgetServiceImpl.java:107)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.server.appwidget.AppWidgetServiceImpl$CallbackHandler.handleMessage(AppWidgetServiceImpl.java:2962)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at android.os.Handler.dispatchMessage(Handler.java:102)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at android.os.Looper.loop(Looper.java:135)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.server.SystemServer.run(SystemServer.java:269)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.server.SystemServer.main(SystemServer.java:170)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at java.lang.reflect.Method.invoke(Native Method)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at java.lang.reflect.Method.invoke(Method.java:372)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-04 03:28:19.394 E/AppWidgetServiceImpl(789):     at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:115)

Я нахожу это невероятно сложным для отладки, поэтому любая предложенная помощь будет принята с благодарностью. Если вам потребуется дополнительная информация, я буду рад ее предоставить.


person Aaron Hastings    schedule 04.10.2015    source источник
comment
Я также смотрю на подобную проблему, и все еще исследую. Этот ответ, по-видимому, дает наиболее вероятный ответ на обе наши проблемы: "> stackoverflow.com/questions/23418357/   -  person thisbytes    schedule 04.11.2015