最初我的活动有一个布局,并使用以下属性来避免重新创建活动,从而在屏幕旋转时向数据库发送新请求:
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize
后来我决定为横向模式使用另一种布局。问题是我的应用程序从未切换到替代布局,因为上述属性。所以,我删除它们,它开始在landspace / portrait layout之间切换,但现在我面临同样的问题,即活动在每次重新创建时向DB发送新请求。
如何使用其他布局并避免重新创建活动?
protected override void OnCreate(Bundle savedInstanceState)
{
AllLinesFromBatch = new List<WhseActivLine>();
Orders = new List<WhseActivHeader>();
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.NextOrder);
var backBtn = FindViewById<Button>(Resource.Id.buttonBack);
backBtn.Click += BackBtn_Click;
var startBtn = FindViewById<Button>(Resource.Id.buttonStart);
startBtn.Enabled = false;
startBtn.Click += StartBtn_Click;
notificationsArea = FindViewById<TextView>(Resource.Id.notificationsNextorder);
notificationsArea.Text = string.Empty;
var dsHeaders = Utility.WsHueckmann.GetDataWhseActivHeaders(PickActivity.CheckedZonesList.ToArray(), LoginActivity.User);
....other code.....
}
在上面的代码中
行var dsHeaders = Utility.WsHueckmann.GetDataWhseActivHeaders(PickActivity.CheckedZonesList.ToArray(), LoginActivity.User)
是对DB进行调用的地方。
答案 0 :(得分:4)
如果问题只是数据库请求,我认为最简单的方法是创建一个Application全局变量,并在您的活动中执行类似的操作:
if (globalDsHeaders == null){
var dsHeaders = Utility.WsHueckmann.GetDataWhseActivHeaders(PickActivity.CheckedZonesList.ToArray(), LoginActivity.User)
globalDsHeaders = dsHeaders
}
else {
dsHeaders = globalDsHeader
}
....
让我知道这是否有用。
答案 1 :(得分:1)