我有几个私人的AsyncTask方法,我想分成公共外部类。在我的应用程序中,我有一个扩展应用程序的公共类,它包含一些我想从我的应用程序的不同部分访问的共享例程。但是,当我分解AsyncTask类时,我不再能够调用getApplicationContext()来获取对我的应用程序库的引用(该类不会从Activity继承任何东西)。 getBaseContext()也会有问题。当它被实例化并从那里构建时,我应该传递一个上下文到AsyncTask中吗?不知道这是否安全。AsyncTask类中的getApplicationContext?
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);
}
}
您应该在构造函数中传递上下文。 – 2013-03-07 18:25:15
您应该使用AsyncTask构造函数与上下文。 – Ashok 2013-03-07 18:26:47