gpt4 book ai didi

java - 如何在处理不同类的异步任务类中使用 databasehelper 类

转载 作者:搜寻专家 更新时间:2023-10-30 23:46:09 24 4
gpt4 key购买 nike

大家好我被困在一个点上,问题是我有下面显示的三个类,我想在 AsyncTask 类中实例化我的 DatabaseHelper 类。你能帮忙吗,我怎样才能在 AsyncTask 类中获取上下文?

问题已解决

  1. MainActivity 类

    public class MainActivity extends Activity {
    ...
    FetchData fetchData = new FetchData();
    fetchData.execute();
    ...
    }
  2. 数据库助手

    public class DatabaseHelper extends SQLiteOpenHelper {
    ....
    public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    ....
    }
  3. 获取数据类

    public class FetchData extends AsyncTask<String, String, String> {
    ....
    DatabaseHelper db = new DatabaseHelper(); //need context here!!!
    ....
    }
#

感谢 Kasra,我创建了一个 fourh 类并在调用 AsyncTask 之前在 MainActivity 中使用它

  1. 上下文静态类

    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 - 假设您正在进行 Activity :

 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();

关于java - 如何在处理不同类的异步任务类中使用 databasehelper 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com