不推荐使用 AsyncTask 的 Xamarin 开发

Xamarin development with AsyncTask being deprecated

我们正处于启动移动应用程序项目的边缘,利用我们的 Microsoft 堆栈,我们希望使用 Xamarin 开发我们的应用程序,更准确地说,Xamarin.AndroidXamarin.IOS(所以不是表格)。

由于我们目前对 Xamarin 的总体了解非常有限,我想知道 AsyncTask 的弃用会对 Xamarin 开发产生什么影响。据我所知,Xamarin 和 .NET 严重依赖于使用 AsyncTask?

我知道弃用并不意味着它不可用或无法使用,但考虑到未来的发展,转向 Xamarin 开发是否明智?

TL;DR: 现在 AsyncTask 已弃用,Xamarin 开发人员是否应该担心?

你是说 Android.OS.AsyncTask 的 AsyncTask 吗?

AsyncTaskTaskSystem.Threading.Tasks有很大区别。

AsyncTask 仅在 Android 上可用,而 Task 已融入 .NET。 System.Threading.Task 无处不在,是编写异步代码的好方法。

带有 AsyncTask 的代码看起来像:

public class MyTask : AsyncTask
{
    protected override void OnPreExecute()
    {
    }

    protected override Java.Lang.Object DoInBackground(params Java.Lang.Object[] @params)
    {
        SomeMethodRunningAsync();
    }

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

虽然使用 Task 的代码看起来更像:

public async Task DoStuffInBackground()
{
    await SomeMethodRunningAsync();
}

我非常怀疑您是否在使用 AsyncTask,除非您移植了一些 Java 代码或将一些代码示例从 Java 转换为 C#。

简答:没有。

长答案:Xamarin 可以使用本机 APIs(平台相关)和 .NET APIs(平台无关)。如果您的应用程序使用本机 APIs,您可以做本机开发人员可以用它们做的任何事情,但它们只能在一个平台上工作。如果他们被弃用,您将处于与任何本地开发人员相同的位置(通常有解决方法/新 API)。 .NET APIs 永远不会被弃用,因为 Xamarin 的工作是实施它们并在它们使用已弃用的东西时让它们继续工作,并且 .NET 不可能无法实施,这只是一个需要付出努力的问题.说清楚,你说的是原生API的变化,问是否影响.NETAPI。正如上面所讨论的,理论上它可能会发生,但我认为这样的问题从未发生过,这听起来一点也不麻烦。