这个问题已经被问到here,但还没有人回答这个问题。
问题:
我创建了一个Xamarin.Forms
应用程序。我正在使用Moto X Developer Edition
运行Android 5.1
来测试此应用程序。当应用程序启动时,一切运行正常,但如果我保持打开状态并且什么都不做,活动将在几分钟后restart
,这会重置我的应用程序的当前状态并转到我的初始登录页面。
测试以确认它是活动还是应用程序:
我有两项活动。一个是SplashScreen
活动,MainLauncher
,另一个是我的FormsApplication
开始。我在两个活动中都使用OnCreate
方法保留了断点。在debuge模式下启动我的应用程序并测试上面的场景。几分钟后,FormsApplication
启动的活动将点击断点,而不是MainLauncher活动。所以它与我的表单应用程序加载的活动有关,而不是整个应用程序。
我认为通过Android清除应用程序以释放RAM会发生这种情况。但我的申请没有暂停。它专注于屏幕。
我不知道为什么会这样。有人遇到过这个问题吗?
活动
[Activity(Label = "SplashScreenActivity", Theme = "@style/Theme.Main", ScreenOrientation = ScreenOrientation.Portrait)]
public class SplashScreenActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
}
答案 0 :(得分:0)
绝对不确定它与它有什么关系,但尝试在[Activity]标志中添加它:
LaunchMode = Android.Content.PM.LaunchMode.SingleTask
它主要允许始终保持活动的实例,即使它是背景的。再次,不确定它是否会起作用。
答案 1 :(得分:0)
只是抓住了它,但Android活动生命周期有很多奇怪之处。在破坏,回收等活动时,操作系统似乎具有相当大的灵活性。在任何情况下,无论这是否解决了原始问题,确保您处理这些情况是个好主意(例如确保它在OnCreate / OnResume /等中进行必要的状态恢复。 )。
答案 2 :(得分:0)
尝试将属性属性赋予主要活动
[Activity(
Label = "MainActivity",ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize
)]
可能会有所帮助。