La base de datos Sqlite debe crearse una sola vez
Hv desarrollado un proyecto que tiene característica C2DM. Siempre que haya datos disponibles en el servidor; El servidor empuja los datos a todos los dispositivos que hv esta aplicación (en mi caso es un msg pequeño).
Ahora mi pregunta es hace cada vez que una base de datos y una tabla se crean donde viene un mensaje, aquí está mi código,
- Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
- Carácter turco en SQLite mientras utiliza la expresión LIKE
- Cursor.getType () y CursorIndexOutOfBoundsException excepción
- Restricción de clave externa ON DELETE CASCADE no funciona en la base de datos sqlite en android
- Sqlite en Android: Cómo crear una función sqlite dist db - que se utilizará en la aplicación para calcular la distancia utilizando lat, largo
public class MessageHelper extends Activity { public String str; public int sts; public Date timeStamp; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bundle extras = getIntent().getExtras(); if (extras != null) { this.str = extras.getString("msgg"); Log.d("C2DM", this.str); } // Create a ref of SQLite SQLiteDatabase db; //use tat ref to open or create a table db = openOrCreateDatabase( "/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); try { //initialsiging a query with all the table fields final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Message4(" + "id INTEGER PRIMARY KEY AUTOINCREMENT," + "msg TEXT not null," + "msg_time INTEGER not null," + "msg_status INTEGER not null);"; //execute the above query db.execSQL(CREATE_TABLE_CONTAIN); timeStamp = new Date(); String sql = "INSERT or replace INTO tbl_Message4 (msg,msg_time,msg_status) VALUES('"+this.str+"' ,'"+this.timeStamp+"' , 0)" ; db.execSQL(sql); } }
También tengo la clase llamada MessageReceiver que extiende Broadcastreceiver; eveytime un mensaje viene la clase se ejecuta que inturn carga el MessageHelper.class aquí es el código para MessageReceiver,
public class C2DMMessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.w("C2DM", "Message Receiver called"); if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) { Log.w("C2DM", "Received message"); final String payload = intent.getStringExtra("payload"); Log.d("C2DM", "dmControl: payload = " + payload); // TODO Send this to my application server to get the real data // Lets make something visible to show that we received the message createNotification(context, payload); } } public void createNotification(Context context, String payload) { NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Message received", System.currentTimeMillis()); // Hide the notification after its selected notification.flags |= Notification.FLAG_AUTO_CANCEL; //Intent intent = new Intent(context, MessageReceivedActivity.class); //intent.putExtra("payload", payload); Intent intent = new Intent(context, MessageHelper.class); intent.putExtra("msgg", payload); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); //PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); //notification.setLatestEventInfo(context, "Message", "New message received", pendingIntent); //notificationManager.notify(0, notification); } }
Lo que estoy buscando es, una base de datos debe ser creado cuando la aplicación se instala por primera vez.
Gracias por adelantado,
El soltero
- Flushing y base de datos SQLite en android
- SQLite Excepción no hay columna al intentar seleccionar
- Cómo utilizar un script para consultar la base de datos android sqlite
- La base de datos SQLite de Android está bloqueada
- Limitación del número de filas en SQLite
- Sqlite3 tabla con límite máximo de líneas (por elección) eficiencia
- Pregunta de Android SQlite OnUpgrade
- Eliminar varias filas de contentprovider
La base de datos se creará una sola vez ya que su nombre no se modifica. Y sí, solo se creará en el momento en que su aplicación inicie la actividad MessageHelper por primera vez.
La base de datos se creará sólo una vez con un solo nombre.
Aquí puede optar por este código también para hacerlo más fácil
"CREATE TABLE IF NOT EXISTS" creará la tabla solamente si aún no está allí. Por lo que se creará sólo una vez. ¿Borra esta tabla en algún otro lugar?
- Cuando se emiten "com.android.vending.INSTALL_REFERRER" get enviar?
- Respecto a la actividad de Android