我正在将android应用程序从目标SDK 30迁移到31:
compileSdkVersion 31
buildToolsVersion '31.0.0'
defaultConfig {
applicationId "some.app.id"
minSdkVersion 16
targetSdkVersion 31
versionCode xyz
versionName "xyz"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
有一个活动的行为因其打开方式而异:
- startAcitity:Aitivity按预期工作
- startActivityForResult:UI工作不正常(元素在通过程序更改可见性后不会出现,按钮大小不再适应其内容,但设置了固定大小(
经过一些测试,问题似乎与UI的大小调整有关。它不再发生了。按钮不会根据其内容调整大小,设置为GONE的元素仍然占用空间等。
还有人遇到过这个问题吗?
我试图在一个新项目中重现这个问题,但没有成功。
最终,我发现这个问题是由于在错误的线程中更改了UI而发生的:android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能访问其视图。
在";runOnUiThread"解决了这个问题。