我对Android非常陌生,我试图制作一个应用程序,可以在智能手机上记录人们的通信模式,并以有趣的方式将其呈现给他们。何时适合使用数据库的单例实例?
现在我有一个服务在后台运行,监听呼出/文本和传入的呼叫/文本。我想把这些数据放到一个数据库中,然后用数据填充一个接口。当有新数据放入数据库时,我希望界面能够反映这一点。
我的问题是:对此有什么好的方法?
有人告诉我,这样做的方式是让数据库是单一实例或在内容提供商包装数据库。有人能够进一步阐述这一点吗?
这是我为我的表
public class LogTable {
//Database name and Version
public static final String DATABASE_NAME = "logs.db";
public static final int DATABASE_VERSION = 1;
//Database Table
public static final String TABLE_NAME = "logs";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_PHONENUMBER = "phonenumber";
public static final String COLUMN_TYPE = "type";
public static final String COLUMN_DATE = "date";
public static final String COLUMN_INCOMING = "incoming";
public static final String COLUMN_OUTGOING = "outgoing";
//Preventing someone from accidentally instantiating the class
//Giving it an empty constructor
public LogTable(){}
//Database creation SQL statement
public static final String DATABASE_CREATE = "CREATE TABLE "
+ TABLE_NAME + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COLUMN_PHONENUMBER + " TEXT, "
+ COLUMN_TYPE + " TEXT, "
+ COLUMN_DATE + " INTEGER, "
+ COLUMN_INCOMING + " INTEGER, "
+ COLUMN_OUTGOING + " INTEGER +);";}
代码这是我MySQliteHelper代码
public class MySQLiteHelper extends SQLiteOpenHelper {
//Constructor
public MySQLiteHelper(Context ctx)
{
super(ctx, LogTable.DATABASE_NAME, null, LogTable.DATABASE_VERSION);
}
@Override
//Method called during creation of the database
public void onCreate(SQLiteDatabase database) {
database.execSQL(LogTable.DATABASE_CREATE);
Log.i("SQL", "Database Created");
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
database.execSQL("DROP TABLE IF EXISTS " + LogTable.TABLE_NAME);
}}