[英]OnPostExecute never gets called
我有一堂课,看起来像这样:
internal class MyClass
: AsyncTask<string, int, List<List<Dictionary<string, string>>>>
{
protected override void OnPostExecute(List<List<Dictionary<string, string>>> result)
{
}
protected override List<List<Dictionary<string, string>>>
RunInBackground(params string[] jsonData)
{
var routes = new List<List<Dictionary<string, string>>>();
return routes;
}
}
其中AsyncTask
属于Android.OS
并发现从未执行过OnPostExecute
。
我还有其他一些类也从AsyncTask
继承(具体来说, AsyncTask<string, string, string>
,但是它们正常工作-即在需要时调用OnPostExecute
。
是什么原因造成的,如何解决?
检查RunInBackground
此问题后 ,我怀疑这可能与RunInBackground
返回.NET
类型( List
)有关。
在弄乱了一些内容之后,我发现执行此操作的正确方法可能是定义以下两种方法:
protected override void OnPostExecute(Java.Lang.Object result)
{
base.OnPostExecute(result);
}
protected override void OnPostExecute(List<List<Dictionary<string, string>>> result)
{
}
首先调用OnPostExecute(Java.Lang.Object result)
,然后将result
传递到另一个OnPostExecute
,后者在某个时刻将Object
转换为所需的List
。
因此,我添加了第二个OnPostExecute
方法,该方法确实被调用:
protected override void OnPostExecute(Java.Lang.Object result)
{
}
在调试器中检查result
之后,我可以在Instance
属性中看到所需的值,现在可以使用以下属性进行检索:
var propertyInfo = result.GetType().GetProperty("Instance");
var newResult =
propertyInfo.GetValue(result, null) as List<List<Dictionary<string, string>>>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.