Android 安卓:理解这一点

Android 安卓:理解这一点,android,sqlite,Android,Sqlite,我试图理解一个负责连接数据库的类 代码是: public class DBAdapter { final Context context; DatabaseHelper DBHelper; SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper

我试图理解一个负责连接数据库的类 代码是:

    public class DBAdapter 
    {

        final Context context;

        DatabaseHelper DBHelper;
        SQLiteDatabase db;

        public DBAdapter(Context ctx)
        {
            this.context = ctx;
            DBHelper = new DatabaseHelper(context);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper
        {
            DatabaseHelper(Context context)
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            //All the necessary method are implemented.
        }

}
因此,为了进行连接,我应该

我的问题是这行
this.context=ctx;
有什么作用:

为什么我们不能忽略这一点,而只是:

public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

如果您正在学习本教程,则它们有一个上下文类变量,因为它们在open方法中引用该变量

public DbAdapter(Context ctx)
{
    this.mCtx = ctx;
    mUsername = PreferenceManager.getDefaultSharedPreferences(ctx).getString(Preferences.USERNAME, "");
}

public DbAdapter open() throws SQLException
{
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

通过该关键字,您可以指定ctx变量中的DBAdapter方法的活动类的地址或引用(属于上下文类型)将分配给类级上下文变量

尽管您可以删除类级变量和
this.context=ctx;
行,只需按照指定的方式编写即可

 public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

但如果您想在整个类中使用ctx(上下文引用)值,建议使用类变量。

根据您的类代码。您不需要将上下文分配给另一个上下文变量。这是简化的代码

 public class DBAdapter 
    {

        DatabaseHelper DBHelper;
        SQLiteDatabase db;

        public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper
        {
            DatabaseHelper(Context context)
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            //All the necessary method are implemented.
        }

}

当您在其他方法中使用上下文时,将上下文分配给另一个变量也很有用。因为变量的范围仅限于其方法。您不能在构造函数之外使用它(根据您的代码)

您能给我文档链接吗?
 public class DBAdapter 
    {

        DatabaseHelper DBHelper;
        SQLiteDatabase db;

        public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper
        {
            DatabaseHelper(Context context)
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            //All the necessary method are implemented.
        }

}