我对 android 很陌生,我正在尝试制作一个应用程序来记录人们在智能手机上的通信模式,并以一种有趣的方式呈现给他们。
现在我有一个在后台运行的服务,它监听拨出电话/短信和来电/短信。我想将这些数据放入数据库,然后使用数据填充界面。当有新数据放入数据库时,我希望界面能够反映这一点。
那么我的问题是:什么是一个好的方法呢?
有人告诉我这样做的方法是让数据库成为单例实例或将数据库包装在Content Provider中。有人可以进一步详细说明吗?
这是我的表代码
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);
}}