应用程序卡在以前运行良好的 Binding.inflate 的原因可能是什么?

What could be the reason that an app can get stuck at Binding.inflate which previously works fine?

提问人:rminaj 提问时间:9/14/2023 最后编辑:rminaj 更新时间:9/14/2023 访问量:56

问:

在意识到我的应用程序似乎表现不佳后,我做了一些聪明的调试策略,即在我的代码和一些厚颜无耻的调试断点之间添加调用,我意识到我的代码似乎没有越过我的代码行。而且我也没有收到任何错误。相关代码如下:LogMainActivitybinding = ActivityMainBinding.inflate(layoutInflater)

Log.d(TAG, "before mainActBind")
binding = ActivityMainBinding.inflate(layoutInflater)
Log.d(TAG, "after mainActBind")
setContentView(binding.root)
Log.d(TAG, "after setContent")
setSupportActionBar(binding.appContentMain.toolbar)
Log.d(TAG, "after setSupportActionBar")

这些是我的 中最上面的行代码,我仍然在那里。MainActivityonCreatesuper.onCreate(savedInstanceState)

我在 Logcat 中得到的内容如下所示:

RenderThread::setGrContext()
Checking for metadata for AppLocalesMetadataHolderService : Service not found
Access denied finding property "vendor.mali.config"
RenderThread::setGrContext()
Checking for metadata for AppLocalesMetadataHolderService : Service not found
before mainActBind
Compat change id reported: 210923482; UID 10259; state: ENABLED
Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (unsupported, reflection, allowed)
Accessing hidden method Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;I)V (unsupported, reflection, allowed)

我目前正在运行 Android Studio Giraffe 2022.3.1 补丁 1。我已经做了 Invalidate Caches、Clean、Rebuild 和 Make Project。

我已经尝试过使用 ,但似乎不起作用DataBindingUtil.setContentView(this, R.layout.activity_main)

这是我activity_main.xml的样子:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

    </data>

    <androidx.drawerlayout.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:openDrawer="start">

        <include
            android:id="@+id/app_content_main"
            layout="@layout/app_content_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="true"
            app:headerLayout="@layout/nav_header_main"
            app:menu="@menu/drawer_menu" />
    </androidx.drawerlayout.widget.DrawerLayout>
</layout>
安卓 Android-Studio 安卓数据绑定

评论


答:

0赞 ninhnau19 9/14/2023 #1

确保您的 XML 布局文件没有错误。

您可以尝试在XML文件中添加标签

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
    </data>
</layout>

评论

0赞 rminaj 9/14/2023
好吧,我的activity_main.xml很简单,所以我不认为这是问题的原因。我将在我的问题上添加布局
0赞 rminaj 9/14/2023 #2

愚蠢的我,我已经发现了问题所在。从本质上讲,我的 s 正在等待即将初始化的东西,而那些等待的代码阻止了所有内容的执行,包括他们需要的类的初始化。因此,我将这些等待代码移至该代码,并解决了该问题。FragmentMainActivityonStart