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

标签 java android database android-asynctask android-sqlite

大家好我被困在一个点上,问题是我有下面显示的三个类,我想在 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/

相关文章:

java - 在 Java 消息调度器中避免原始类型

java - JFormattedTextField 严格解析数字格式

Android java.lang.ClassCastException : android. widget.LinearLayout 无法转换为 android.widget.TextView

android - 选择图像时无法解码流

sql - 如何对 SQL 数据库进行实时更改

MySQL:如何查询父子关系?

java - 为什么拆分 `(?!^)` 和 `(?&lt;!^)` 会产生相同的答案?

java - 在 java 中捕获 sql 开发人员脚本输出

Android 启动器图标 - 我的默认/mdpi 资源是否多余?

database - 手机的数据类型没有