java - OnPostExecute 永远不会被调用

标签 java c# android xamarin xamarin.android

我有一个类,如下所示:

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 在预期时被调用。

造成这种情况的原因是什么?我该如何解决它?

最佳答案

检查后this question ,我怀疑这可能与 RunInBackground 返回 .NET 类型 (List) 有关。

更新

经过一番尝试后,我发现正确的方法可能是定义以下 2 个方法:

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)
{

}

在调试器中检查结果后,我可以在Instance属性中看到我需要的值,我现在可以使用以下方法检索该值:

var propertyInfo = result.GetType().GetProperty("Instance");
var newResult = 
    propertyInfo.GetValue(result, null) as List<List<Dictionary<string, string>>>;

关于java - OnPostExecute 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43551539/

相关文章:

java - 如何修复 : Embedded H2 Database "NonTransientError: Unable to read the page at position" error?

java - 如何让 Spring Data Couchbase 保留 id 字段?

c# - 通过 DTM_SETSYSTEMTIME 更新另一个进程中的 dateTimePicker

c# - 任务栏(explorer.exe)被杀死后重新打开它?

android - BottomNavigationView 以编程方式设置所选项目的背景颜色

php - 从 Google PlayStore 获取应用排名

java - 使用 java 编写 .ics iCal 文件

Java EE 7 - @Decorator、@Stateless 和@PersistenceContext = nullpointerException

c# - 如何将 Common 属性添加到派生自 EventArgs 的两个类?

java - 带按钮和 EditText 的 ListView