パブリック外部クラスに分割したいプライベートAsyncTaskメソッドがいくつかあります。私のアプリケーションには、アプリケーションのさまざまな部分からアクセスしたいいくつかの共有ルーチンを保持するApplicationを拡張するパブリッククラスがあります。ただし、AsyncTaskクラスを分割すると、getApplicationContext()を呼び出してアプリケーションライブラリへの参照を取得できなくなります(クラスは現在Activityから何も継承していません)。getBaseContext()にも問題があります。コンテキストがインスタンス化されてそこからビルドされるときに、コンテキストをAsyncTaskに渡す必要がありますか?それが安全かどうかわからない。
import java.util.ArrayList;
import android.os.AsyncTask;
public class DlTask extends AsyncTask
{
long totalbytes = 0;
long totalread = 0;
ArrayList <String> data;
@Override
protected void onPreExecute ()
{
AppLib lib = (AppLib) getApplicationContext();
lib.saveStatusText ("Contacting " + lib.getServerAddress () + ":" + lib.getServerPort () + "...");
super.onPreExecute ();
}
@Override
protected Object doInBackground (Object... params)
{
data = lib.sendCommand (CMD_LIST);
return true;
}
@Override
protected void onPostExecute (Object result)
{
if (data != null)
{
lib.saveStatusText (data.size () + " files found");
}
else
{
Log.d (TAG, "data is null");
Toast.makeText (getBaseContext(), msg, Toast.LENGTH_SHORT).show ();
}
super.onPostExecute(result);
}
}