我的应用正在恢复过程中,它在Android框架代码中崩溃。我无法重现崩溃,只能通过崩溃报告来了解它。此外,崩溃发生在Android 7、8、9上,并散布在许多制造商中。
这是android.os.RemoteException
的导致崩溃的堆栈跟踪:
com.android.server.am.ActivityManagerService.isTopOfTask(ActivityManagerService.java:14764) at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2417) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3346) at android.os.Binder.execTransact(Binder.java:731)
上述异常是由我的Activity
的{{1}}调用触发的,然后在
super.onResume()
最后,由于系统无法启动应用程序,上述异常被捕获为IllegalArgumentException
。这是最后一个堆栈跟踪:
android.os.Parcel.createException + 1970 (Parcel.java:1970)
androidx.fragment.app.FragmentActivity.onResume + 514 (FragmentActivity.java:514)
除了对RuntimeException
的调用之外,我的android.app.ActivityThread.performResumeActivity + 4015 (ActivityThread.java:4015)
com.android.internal.os.ZygoteInit.main + 965 (ZygoteInit.java:965)
函数中没有代码运行。
我尝试在有问题的onResume
中使应用程序背景化/前景化,同时限制了后台进程,并且打开了“请勿保持活动”,但无法重现崩溃。
有人建议重现崩溃吗?
以下代码显示super
的启动方式:
Activity
这是代码关闭Service
@Singleton
class ExoplayerManager @Inject constructor(
@Application private val context: Context,
...
) : CastManager.CastEventListener {
private fun startService() {
lecture?.let {
val intent = ExoplayerService.createIntent(context, it.generateCompositeIdObject())
logd { "[ExoplayerService] startForegroundService called" }
ContextCompat.startForegroundService(context, intent)
}
}
}