rksoftware

Visual Studio とか C# とかが好きです

AsynkTask の abstract メソッドについて

Xamarin.Android の AsyncTask クラスには、Android API にはない abstract メソッドがあります。

protected abstract TResult RunInBackground (params TParams[] params)

似たメソッドに、Android API にもある

protected override Object DoInBackground (params Object[] native_parms)

があります。

違いは、ジェネリックかどうかで、前者はクラスのジェネリックパラメータに合わせた型で実装できます。
基本前者を使って実装すればよさそうです。abstract なので必ず実装しなければなりませんし。

両方を実装した場合

上記の二つのメソッド、両方を実装することができます。
もし両方を実装していた場合、DoInBackground だけが動作します。
既存の Android アプリのソースコードを Xamarin.Android に移植する場合など、既存コードのまま DoInBackground で実装してもとりあえず大丈夫そうです。
その場合、RunInBackground も実装する必要がありますが、Visual Studio に任せて生成した次のような実装のままで平気です。呼ばれないので。

protected override bool RunInBackground(params Void[] @params)
{
    throw new NotImplementedException();
}