OnPostExecute 永远不会被调用

贝西

我有一个看起来像这样的课程:

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返回.NET类型 ( List)的事实有关

更新

在搞乱了一些之后,我发现这样做的正确方法可能是定义以下两种方法:

protected override void OnPostExecute(Java.Lang.Object result)
{
    base.OnPostExecute(result);
}

protected override void OnPostExecute(List<List<Dictionary<string, string>>> result)
{

}

WhereOnPostExecute(Java.Lang.Object result)首先被调用,然后传递result到 other 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>>>;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章