我有幾個私人的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