2016-10-04 10 views
0

Я создаю приложение для Android. Я использую schematic для создания поставщика контента.Справочный сгенерированный код в Java

Я понимаю, что фактический код, используемый приложением, генерируется из классов, которые я создаю. Исходя из этого, я хотел бы знать, с какими проблемами сталкиваюсь, если ссылаюсь на сгенерированный код в исходном коде.

код я использую следующее:

package com.example.movies.data; 

@Database(
    version = MovieDatabase.VERSION, 
    packageName = "com.example.movies.provider" 
) 
public class MovieDatabase { 
    public static final int VERSION = 1; 

    @Table(MovieColumns.class) 
    public static final String MOVIE = "movie"; 

    // Some more tables here 

    @OnUpgrade 
    public static void onUpgrade(Context context, SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("drop table if exists " + MOVIE); 

    // The next SQL statement is generated out of the current class 
    db.execSQL(com.example.movies.provider.MovieDatabase.MOVIE); 
    } 
} 

Сгенерированный код следующий:

package com.example.movies.provider; 

public class MovieDatabase extends SQLiteOpenHelper { 
    private static final int DATABASE_VERSION = 1; 

    // The next statement is the one I use in the source code 
    public static final String MOVIE = "CREATE TABLE movie (" 
    + MovieColumns._ID + " INTEGER PRIMARY KEY," 
    + MovieColumns.TITLE + " TEXT NOT NULL," 
    + MovieColumns.SYNOPSIS + " TEXT," 
    + MovieColumns.POSTER_URL + " TEXT NOT NULL," 
    + MovieColumns.RELEASE_DATE + " INTEGER NOT NULL," 
    + MovieColumns.RATING + " REAL)"; 

    // Some other SQL statements and functions 

    // The next function is generated out of onUpgrade 
    // in the source class MovieDatabase 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    com.example.movies.data.MovieDatabase.onUpgrade(context, db, oldVersion, newVersion); 
    } 
} 

Как вы можете видеть, я в выписках SQL, сгенерированные исходным кодом, и идея использования указанной библиотеки заключается в том, чтобы избежать всего кода шаблона.

Есть ли другие альтернативы?

ответ

0

Немного лучше было бы:

@OnUpgrade 
    public static void onUpgrade(Context context, SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("drop table if exists " + MOVIE); 

    // The next SQL statement is generated out of the current class 
    com.example.movies.provider.MovieDatabase.getInstance(context).onCreate(db); 
    } 

По крайней мере, вам не нужно указывать каждую таблицу.

Основываясь на этом, я хотел бы знать, с какими проблемами столкнусь, если ссылаюсь на сгенерированный код в исходном коде.

Я бы сказал, что никаких реальных проблем не было.

Единственное примечательное, что Android Studio выделит это как ошибку компиляции до создания класса (во время первой сборки).

 Смежные вопросы

  • Нет связанных вопросов^_^