Xamarin Android屏幕方向

biswetbf  于 2023-02-01  发布在  Android
关注(0)|答案(2)|浏览(174)

我正在为Android编写WebView应用程序(空白Xamarin项目/ Visual Studio 2022)。我添加了这一行,这样WebView就不会在方向改变时重新加载:
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
这适用于Pixel 5 - API 30(Android 11.0)模拟器(调试),但当我将其作为APK(发布)安装在我的Galaxy Note 20上时,应用程序只显示空白的白色屏幕。
没有:
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)
应用程序工作正常,但在方向改变时不断重新加载。
我希望应用程序不会在方向改变时重新加载,并将用户返回到主页,通过以下方式调用:webView.LoadUrl("url");并保留在当前网页上。

vmpqdwk3

vmpqdwk31#

通过发布变更解决问题:

  • 在Android选项上“链接”到“无”
  • 在构建时取消选中“定义TRACE常量”
  • 在生成时取消选中“优化代码”

移除

ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize

将此添加到OnCreate():

if (savedInstanceState == null) 
{
     webView.LoadUrl("url");
}

以及这些:

protected override void OnSaveInstanceState(Bundle outState)
{
    webView.SaveState(outState);
    base.OnSaveInstanceState(outState);
}

protected override void OnRestoreInstanceState(Bundle savedInstanceState)
{
    base.OnRestoreInstanceState(savedInstanceState);
    webView.RestoreState(savedInstanceState);
}
quhf5bfb

quhf5bfb2#

为什么是这三个要点?当为发布而构建时,这将是一个非常大的aab/apk。你应该总是使用SDK和用户程序集来构建发布。

相关问题