我正在尝试在xamarin.adroid应用程序中的WCF中创建一个端点,然后再创建一个代理。我有以下代码:
protected override void OnCreate(Bundle savedInstanceState)
{
setEndPointAddress();
setProxy();
}
private void setEndPointAddress()
{
try
{
string myAddress = GestorConfiguracion.getDireccionServicio();
_endPointAddress = new EndpointAddress(myAddress);
}
catch(UriFormatException)
{
string myTitle = "My title";
string miStrMessage = "My error message.";
ShowAlert(myTitle, miStrMessage);
}
}
private void setProxy()
{
if(_endPointAddress != null)
{
_proxy = new MyProxy(_binding, _endPointAddress);
}
}
public void ShowAlert(string paramTitle, string paramMessage)
{
Android.Support.V7.App.AlertDialog.Builder alert = new Android.Support.V7.App.AlertDialog.Builder(this);
alert.SetTitle(paramTitle);
alert.SetMessage(paramMessage);
alert.SetPositiveButton("OK", (senderAlert, args) => {
//Code to be run after answer of the user
});
//run the alert in UI thread to display in the screen
RunOnUiThread(() => {
alert.Show();
});
}
问题是OnCreate方法上的代码一直运行到最后,才向用户显示消息。我的意思是,如果我在OnCreate方法的setProxy()行中设置了一个断点,则该消息未在android仿真器中显示,我必须继续执行直到OnCreate方法的结尾,然后才是该消息显示。
显示警报的方法似乎不是异步的,也不是使我认为应该等待他的另一种方法。
实际上,如果我让代码运行到最后没有问题,但是我想知道它是如何工作的以了解它。
谢谢。
答案 0 :(得分:1)
我会考虑将那些调用从OnCreate()转移到OnStart()或OnResume(),因为在您试图显示对话框时尚未创建活动。在OnCreate()返回之前,屏幕将不会开始绘制任何内容。
但是,即使您移动了该代码,主要的问题是AlertDialog不是模式对话框,因为Android不想让您阻塞UI线程。