android 应用程序在我关闭调试器时崩溃,但在调试时不会崩溃

时间:2020-12-28 23:35:57

标签: android debugging service

我正在使用 Android 服务来更新 appwidget。我使用 startForegroundService 为 android O 及更高版本启动服务,并使用 startForeground 为 21-26(我的项目的较低 api 范围)启动服务。当我通过选择“调试应用程序”或“运行应用程序”使用 Android Studio 调试器运行应用程序时,应用程序和服务将正常工作。一旦我通过点击 Studio 中的“停止应用程序”按钮关闭应用程序,应用程序就会崩溃。我在 logcat 中收到以下错误:

 2020-12-28 18:05:08.934 1737-1919/? W/SurfaceFlinger: Attempting to destroy on removed layer: AppWindowToken{a11cf63 token=Token{7695992 ActivityRecord{4c3031d u0 dev.rand.zulutime/.ZuluTime3 t47}}}#0 <---
 2020-12-28 18:05:26.453 1879-1889/? I/ActivityManager: Force stopping dev.rand.zulutime appid=10086 user=0: from pid 7754
 2020-12-28 18:05:26.453 1879-1889/? I/ActivityManager: Killing 7666:dev.rand.zulutime/u0a86 (adj 200): stop dev.rand.zulutime
 2020-12-28 18:05:26.453 1879-1889/? W/ActivityManager: Scheduling restart of crashed service dev.rand.zulutime/.TimerTick in 1000ms
 2020-12-28 18:05:26.456 1879-1889/? I/ActivityManager:   Force stopping service ServiceRecord{f0d3b05 u0 dev.rand.zulutime/.TimerTick}

标有 <--- 的第一行是我单击停止按钮之前出现的最后一行。然后该服务被强制停止并拒绝重新启动。

我通过 Google Play 收到错误消息,表明发生 NullPointerException,但 logcat 中唯一的异常是

 Didn't find class "androidx.core.app.CoreComponentFactory

我在 StackOverflow 上到处搜索,但没有帮助我为什么会得到这个,但这似乎不是导致服务崩溃的问题,因为该服务不使用 androidx 的布局资源。调试应用程序时出现 NullPointerException,这是由 getResourceIdentifier() 引起的 NumberFormatException ,但这似乎是设计使然,在我的崩溃报告中没有引用,如下所示:

 java.lang.RuntimeException: 
   at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4733)
   at android.app.ActivityThread.access$2000 (ActivityThread.java:302)
   at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2155)
   at android.os.Handler.dispatchMessage (Handler.java:106)
   at android.os.Looper.loop (Looper.java:246)
   at android.app.ActivityThread.main (ActivityThread.java:8414)
   at java.lang.reflect.Method.invoke (Native Method)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:596)
   at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
 Caused by: java.lang.NullPointerException: 
   at dev.rand.zulutime.TimerTick.onStartCommand (TimerTick.java:98)
   at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4715)

发生的另一件有趣的事情是,当应用程序在调试会话后立即崩溃时,我仍然可以在虚拟设备中正常运行该应用程序,一旦我启动该应用程序,该服务就会正常运行并且不会崩溃。

我只是不明白为什么 ActivityManager 在我退出调试器后立即终止我的服务。如果您有任何关于如何追踪此错误的建议,我将不胜感激。

0 个答案:

没有答案
相关问题