我的应用程序有一些奇怪的行为,所以我重新创建了应用程序,直到它发出错误并发现ScreenOrientation.Landscape是罪魁祸首。
如果您在visual studio 15中创建一个新的空白应用程序并将MainActivity替换为:
[Activity(Label = "TestLandscapeBug", MainLauncher = true, Icon = "@drawable/icon",
ScreenOrientation = ScreenOrientation.Landscape)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
System.Console.WriteLine("OnCreate");
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
}
protected override void OnDestroy()
{
System.Console.WriteLine("OnDestroy");
base.OnDestroy();
}
protected override void OnPause()
{
System.Console.WriteLine("OnPause");
base.OnPause();
}
protected override void OnRestart()
{
System.Console.WriteLine("OnRestart");
base.OnRestart();
}
protected override void OnResume()
{
System.Console.WriteLine("OnResume");
base.OnResume();
}
protected override void OnStart()
{
System.Console.WriteLine("OnStart");
base.OnStart();
}
protected override void OnStop()
{
System.Console.WriteLine("OnStop");
base.OnStop();
}
}
运行应用程序并按下睡眠按钮: 调用OnPause,OnStop,OnDestroy,OnCreate,OnStart,OnResume和OnPause。
如果你删除ScreenOrientation = ScreenOrientation.Landscape OnPause和OnStop被调用。
这是一个错误吗?或者我做错了什么? 我该如何解决这个问题,或者使用其他方法将屏幕锁定在风景中。
答案 0 :(得分:1)
当屏幕锁定时,活动切换到纵向模式是正常的。每当方向改变时,都会调用OnDestroy,然后调用OnCreate。所以,没有什么可担心的,因为你所看到的是Android的默认行为。
纵向是锁屏的默认方向,因此在锁定时您的活动也会切换到该方向。