2013-09-25 14 views
1

我对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); 

}} 

回答

0

我的建议是,你是创建数据库操作的异步任务队列,所以你不会得到错误,并在后台执行数据库操作和创建此队列的单

这种方法的优点是有不会被需要同步功能

这样做,你应该实现异步任务的延伸

操作建议是将消息发送到队列,队列可恩ecute new operation 你可以寻找我的要点,如果你想

https://gist.github.com/TalhaAkkas/6697962