大家好,我被困在一个地方,问题是我有下面显示的三个类,并且我想在AsyncTask类中实例化我的DatabaseHelper类。您能否提供帮助,如何在AsyncTask类中获取上下文?
问题解决了
public class MainActivity extends Activity {
...
FetchData fetchData = new FetchData();
fetchData.execute();
...
}
public class DatabaseHelper extends SQLiteOpenHelper {
....
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
....
}
public class FetchData extends AsyncTask<String, String, String> {
....
DatabaseHelper db = new DatabaseHelper(); //need context here!!!
....
}
#
感谢Kasra,我创建了第四个类并在调用AsyncTask之前在MainActivity中使用它
public class ContextStatic {
private static Context mContext;
public static Context getmContext() {
return mContext;
}
public static void setmContext(Context mContext) {
ContextStatic.mContext = mContext;
}
}
更新了MainActivity类
public class MainActivity extends Activity {
...
ContextStatic.setmContext(this);
FetchData fetchData = new FetchData();
fetchData.execute();
...
}
试试这个:
private class FetchData extends AsyncTask<Context, Void, Void> {
protected Long doInBackground(Context... c) {
Context myContext = c[0];
// Do your things here....
}
protected void onPostExecute() {
// Insert your post execute code here
}
}
您可以通过以下行调用此AsyncTask-假设您处于活动状态:
new FetchData().execute(this);
如果您无法更改AsyncTask减速度,则可以尝试使用静态变量-尽管它不如AsyncTask减速度那么有效且美观。试试这个:
Class myStatic{
private static Context mContext;
static public void setContext(Context c);
mContext = c;
}
static public Context getContext(){
return mContext;
}
}
在主代码中,在调用AsyncTask之前,请调用以下代码:
myStatic.setContext(this);
在AsyncTask的doInBackground方法中,添加以下代码:
Context myContext = myStatic.getContext();
问题内容: 我必须将数据上传到服务器。我正在使用与我的应用程序运行在同一进程上的服务。我应该使用单独的线程进行上传过程还是应该使用AsyncTask将数据上传到服务器? 更具体地说,我可以在服务类中使用AsyncTask吗?我应该使用它吗?此服务应始终在内存中运行,以便每5秒将数据发送到服务器。 问题答案: 是的,您可以,下面的代码每5秒运行一次。使用常规的连接代码发送零件。
问题内容: 当我在一个类文件中使用代码时,它可以完美运行: 我想从其他类文件运行我的异步任务,我有代码: 下载File.java 下载FileAsync.java 我正在使用eclipse,并且我的DownloadFile.java文件中出现错误,有很多带红色下划线的代码…。我是java和android dev的新手。 问题答案: 如果可以通过某种方式将Activity类或其上下文传递给Async
问题内容: 我正在Spark中将模型实现为python类,并且每次尝试将类方法映射到RDD时,它都会失败。我的实际代码更加复杂,但是这个简化的版本成为了问题的核心: 现在,如果我像这样运行模型(例如): 我收到以下错误: 例外:看来您试图从广播变量,操作或转换中引用SparkContext。SparkContext只能在驱动程序上使用,而不能在工作程序上运行的代码中使用。有关更多信息,请参见SPA
目前,我在主activity类和widget类中都声明了一个AsyncTask。除了中的结果处理之外,其他代码都是一样的(在activity中,检索到的结果转到activity中的textview,而在小部件中,它转到my widget中的textview)。 我想将移动到一个外部java文件中(以避免代码重复),并通过不同的结果处理方式从其他不同的类(如我的小部件和main activity)调
问题内容: 我们正在考虑将应用程序从obj-c迁移到Swift。一个问题是,我们的obj- c代码中有一个UITableView,其中包含类型为或类型的对象。基本上,它解析cellForRowAtIndexPath上具有的类型。Swift数组(据我所知)只能处理一种类型。鉴于此,我们如何处理UITableView中要使用的两种不同类型?是否会有像DataObj这样的包装对象,我们每个工作都有可精巧
本文向大家介绍我们如何在HTML中使用不同的CSS类?,包括了我们如何在HTML中使用不同的CSS类?的使用技巧和注意事项,需要的朋友参考一下 在HTML中,根据元素的class属性定义样式规则。具有该类的元素将根据定义的规则进行格式化。这称为类选择器。要选择具有特定类的元素,需要编写一个句点(。)字符,后跟类的名称,例如.black 对于文档中class属性设置为black的每个元素,以黑色显示