ActivityInjector 的活动错误获取生命周期异常

问题描述 投票:0回答:3

我的应用程序在启动时崩溃,然后我收到此错误,这种情况很少发生。

[ 11-22 11:27:13.287 26135:26135 E/ActivityInjector ]
get life cycle exception
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to android.app.servertransaction.ClientTransaction
    at android.app.ActivityInjector.checkAccessControl(ActivityInjector.java:24)
    at android.app.Activity.onResume(Activity.java:2032)
    at com.myapp.MyActivity.onResume(Unknown Source:0)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1457)
    at android.app.Activity.performResume(Activity.java:8390)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4601)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4643)
    at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:58)
    at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5616)
    at android.app.ActivityThread.access$3500(ActivityThread.java:264)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2183)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:236)
    at android.app.ActivityThread.main(ActivityThread.java:8168)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

我使用的是搭载 Android 11、MIUI 12.5 的小米设备
这似乎是一个系统错误,有什么办法可以防止它发生吗?

android android-activity
3个回答
1
投票

我不会因此异常而崩溃,但当我使用此代码时,当我的手机处于轻型模式时,我遇到了此异常

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

然后我在fragment的activity中这样设置(由你决定)

override fun onCreate(savedInstanceState: Bundle?) {
    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
    super.onCreate(savedInstanceState)
    setContentView(createBinding().root)
    initView()
}

然后异常消失了。


0
投票

1- 转到 values/themes/theme.xml 文件

2-放置一个新的项目

 <item name="android:forceDarkAllowed">false</item>

3-按照 IDE 的建议接受在 value-v29 中覆盖。

4-再试一次。作品?赞同我的回答;)

发生在小米设备上


0
投票

我认为这是小米手机型号的问题。

我认为在您的代码中 super.onCreate(savedInstanceState) 是在主题设置代码之前调用的。因此,当应用程序启动时,基本活动进程将在仍设置白天/夜间模式之前启动。这意味着在 setDefaultNightMode 操作之前发生的某些操作可能会影响应用程序的操作,从而导致错误消息。

在您的新代码中,如果在使用 SharedPreferences 检查日/夜模式设置后调用 setDefaultNightMode 操作。这可确保在核心活动操作之前正确完成夜间/白天模式设置,从而避免潜在的不兼容或错误。

所以基本上,在调用 super.onCreate(savedInstanceState) 之后将代码设置为夜间/白天模式可确保遵循正确的顺序并避免错误。

© www.soinside.com 2019 - 2024. All rights reserved.