这里有几种方法。我很确定这三个都应该工作,但我自己没有测试过它们。
方法一
为 AsyncTask 创建一个构造函数,该构造函数接受 Context 并将其存储,以便您可以在它执行时使用它。
异步任务代码
public class DataProcessor extends AsyncTask<Void, Void, Void>{
private Context mContext;
public DataProcessor(Context context){
this.mContext = context;
}
@Override
protected Void doInBackground(Void... params) {
DataBaseHelper helper = OpenHelperManager.getHelper(mContext, DatabaseHelper.class)
// Your code here
}
}
实现代码(用于 Activity)
new DataProcessor(this).execute();
方法二
调用execute
方法时将上下文作为参数传入
异步任务代码
public class DataProcessor extends AsyncTask<Context, Void, Void>{
@Override
protected Void doInBackground(Context... params) {
Context context = params[0];
DataBaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class)
// Your code here
}
}
实现代码(用于 Activity)
new DataProcessor().execute(this);
方法三
有一个异步任务可以直接访问的上下文的静态实例。可以在这里找到一种方法:Static way to get 'Context' on Android?
异步任务代码
public class DataProcessor extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
DataBaseHelper helper = OpenHelperManager.getHelper(MyApplication.getAppContext(), DatabaseHelper.class)
// Your code here
}
}
实现代码(用于 Activity)
new DataProcessor().execute(this);