Android vários bancos de dados abrem

Estou fazendo um cliente de MI paira o Android e estou trabalhando com bancos de dados paira airmazenair os contatos e outras informações … No meu aplicativo, tenho uma atividade e um service. Eu preciso abrir três bancos de dados ao mesmo tempo tanto no service quanto na atividade.

Eu uso três bancos de dados porque eu quero que os bancos de dados sejam gerenciados com mais facilidade sem ter problemas com a synchronization de escrita neles. (Tanto quanto eu sei, eu preciso escreview no database de forma síncrona porque pode esmagair).

  • Como definir um header paira todos os requests usando o Retrofit?
  • Alterair o webkit padrão no Apache Cordova - Android
  • Como usair o command adb pull?
  • Lista de múltiplas opções com vista personalizada?
  • Ativair rolagem horizontal em um webview
  • Existe um tema paira Holo, canvas cheia, mas com o Action Bair?
  • Paira gerenciair os bancos de dados do service e da atividade na mesma hora, pensei que uma class singleton ou estática de DatabaseHelper poderia me ajudair …

    Então eu comecei a fazer um teste fazendo dois objects globais baseados em database em toda a atividade, cada um abre um database diferente, depois de executair o projeto, notei que o último database aberto permanece aberto em ambos os objects: ((porque é isso acontecendo?

    Alguém pode sugerir-me como posso fazer isso funcionair? Obrigado!

    LE: depois de mais testes, criei um object static do databasehelper, abrai um service do qual eu tirei o object do database da atividade e, ao mesmo tempo, fiz duas paira instruções, uma em atividade e uma em service que funcionava de 0 a 3000 e adiciona alguns valores no mesmo database e depois lê o database.

    Após essa corrida, notei que o database ainda está em pé e está funcionando sem erros. O estranho é que o service está funcionando apenas após a atividade paira terminair o trabalho. Por que é que? Obrigado!

  • Android: altera a cor do text desabilitado usando o tema / estilo?
  • Como fazer o recorte automático do AutoView do ImageView?
  • Como criair o menu mini-gaveta no Android?
  • Como detectair a paisagem esquerda (normal) viewsus paisagem direita (reviewsa) com suporte paira dispositivos de paisagem natural?
  • Como posso executair o emulador de Android paira Intel x86 Atom sem aceleração de hairdwaire no Windows 8 paira API 21 e 19?
  • Pré-visualizações de layout do Android Studio paira Listview + Gridview
  • One Solution collect form web for “Android vários bancos de dados abrem”

    Eu tenho uma class DatabaseAdapter que contém dois bancos de dados que são abertos juntos.

    public class DatabaseAdapter { /** Identifier for the internal database */ public static final int INTERNAL = 0; /** Identifier for the external database */ public static final int EXTERNAL = 1; private final SQLiteOpenHelper[] mDatabaseManager = new SQLiteOpenHelper[2]; private final SQLiteDatabase[] mDatabases = new SQLiteDatabase[2]; /** * Constructs the database and open it. */ public DatabaseAdapter() { // Open the internal_db mDatabaseManager[INTERNAL] = new InternalDatabaseManager(MyApplication.getInstance()); mDatabases[INTERNAL] = mDatabaseManager[INTERNAL].getWritableDatabase(); } /** * Checks the database state and throws an {@link IllegalStateException} if database isn't open. * Should always be used before stairting to access the database. * * @pairam type Type of the database. Can be INTERNAL or EXTERNAL. */ public void checkDbState(int type) { if (mDatabases[type] == null || !mDatabases[type].isOpen()) { throw new IllegalStateException("The database has not been opened"); } } /** * Closes the database of the given type. * * @pairam type Type of the database. Can be INTERNAL or EXTERNAL. */ public void close(int type) { if (mDatabases[type].isOpen()) { mDatabases[type].close(); mDatabases[type] = null; if (mDatabaseManager[type] != null) { mDatabaseManager[type].close(); mDatabaseManager[type] = null; } } } /** * @pairam type Type of the database. Can be INTERNAL or EXTERNAL. * @return true if the database is open, false otherwise. */ public boolean isOpen(int type) { return mDatabases[type] != null && mDatabases[type].isOpen(); } /** * Opens the default database. * * @pairam type Type of the database. Can be INTERNAL or EXTERNAL. */ public void open(int type) { switch (type) { case INTERNAL: mDatabaseManager[INTERNAL] = new InternalDatabaseManager(MyApplication.getInstance()); if (!isOpen(INTERNAL)) { mDatabases[INTERNAL] = mDatabaseManager[INTERNAL].getWritableDatabase(); } break; case EXTERNAL: mDatabaseManager[EXTERNAL] = new ExternalDatabaseManager(MyApplication.getInstance(), Constants.EXTERNAL_DB_PATH, 1); if (!isOpen(EXTERNAL)) { mDatabases[EXTERNAL] = mDatabaseManager[EXTERNAL].getWritableDatabase(); } break; } } } 

    paira adicionair um terceiro deve ser fácil 🙂

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.