在 Activity 中加载巨大的 XML 布局,当 activity 在前面时设备锁定和解锁时导致冻结?

Loading huge XML layout in Activity, causing freeze when device locked and unlocked when activity is in front?

我已经加载了一个巨大的布局 XML(> 1600 行),它有一个带有多个布局的视图翻转器。它首先冻结在 'onCreate',但我更改了代码以在后台膨胀布局并将返回的视图传递给 'setContentView' 在 'onPostExecute'。 (这工作正常)

现在,当 activity 打开(在前面)并且设备被锁定(或屏幕关闭)时,当我尝试解锁设备时,它在某些设备上完全冻结,并且其他设备它显示一个对话框说 "App isn't responding. Do you want to close it?" 选项 "Wait" 和 "Ok".

请帮我解决这个问题。

谢谢

终于明白是什么问题了。

我在 AsyncTask 中使用 LayoutInflater 将整个 XML 膨胀到视图中,就像这样...

@Override
protected View doInBackground(Void... params) {
     Looper.prepare();
     View view = getLayoutInflater().inflate(R.layout.my_large_xml, null, false);
     return view;
}

@Override
protected void onPostExecute(Void result)
{
     setContentView(view);
}

事实证明,当我们使用视图对象设置内容视图时,它会在 activity 暂停时冻结设备(我不确定为什么)。 但是当我使用 setContentView(R.layout.my_large_xml) 方法时,它工作得很好。所以我放弃了在后台加载 XML 的想法,现在我以常规方式在我的主线程上执行它,因为我们不能从另一个线程调用 setContentView

伤心!这不是我想要的样子,因为它会在最初调用 setContentView 时冻结应用程序,但至少它现在可以正常工作。 :(

我不会放弃,会继续努力。而且,如果我找到更好的解决方案,我会更新答案。 :)