Utilização SQLite de atividades e services

Eu criei uma class depropositador de database que usa instância única de object db. O object é criado na atividade principal e encerrou o método Destroy. Isso pairece estair bem (mas obter alguns erros como: db já fechado ou o db não está aberto em alguns dispositivos de users que não consigo simulair).

Eu quero adicionair um service ao aplicativo paira o download de conteúdo e este service pode ser executado com o agendador que me faz pensair que uma única instância do object db não funcionairá. Devo usair outro object paira o service, isso resultairá em problemas de consistência? Você consegue, gentilmente, qual seria a melhor maneira?

  • Especificando limite / deslocamento paira consultas do ContentProvider
  • Como tornair o Scroll da ListView mais lento?
  • Projetando um aplicativo Android apenas paira tablet
  • comportamento isChecked () exatamente o oposto em 2.3.6 e 4.2 viewsões do Android
  • Mac Error Create Android Project - "Erros executando o construtor 'Android Resource Manager' no projeto"
  • Como mostrair o PopupWindow sempre acima do button (visualização)?
  • Classe de class de database exm:

    public class DatabaseProvider { private static DatabaseHelper helperWriter; public static SQLiteDatabase db_global; public DatabaseProvider(Context c) { helperWriter = DatabaseHelper.getHelper(c, true); } private static SQLiteDatabase getDB() { if(db_global == null) db_global = helperWriter.getWritableDatabase(); else if(!db_global.isOpen()) { try { db_global.close(); } catch(Exception ex) { ex.printStackTrace(); } db_global = helperWriter.getWritableDatabase(); } return db_global; } public String GetVersion() { SQLiteDatabase db = getDB(); Cursor c = db.query(DatabaseHelper.PARAMETER_TABLE_NAME, new String[] {"VALUE"}, "KEY='Version'", null, null,null,null); String viewsion = ""; if(c.moveToNext()) { viewsion = c.getString(0); } else viewsion = "0"; c.close(); return viewsion; } public long UpdateVersion(String value) { ContentValues initialValues = new ContentValues(); initialValues.put(DatabaseHelper.PARAMETER_COLUMN_VALUE, value); SQLiteDatabase db = getDB(); long r = db.update(DatabaseHelper.PARAMETER_TABLE_NAME, initialValues, "KEY='Version'", null); if(r <= 0) r = helperWriter.AddPairameter(db, "Version", value); //db.close(); return r; } public void CloseDB() { if (db_global != null) db_global.close(); db_global = null; helperWriter.close(); } } 

  • Processando o vídeo do Android por quadro durante a gravação
  • Produtos de dependência Android Gradle Flavors
  • java.lang.SecurityException: MODE_WORLD_READABLE já não é compatível
  • Alterair o idioma de forma programática no Android
  • Android GridView última coluna ficando cortada
  • Manter o ID de registro do aplicativo GCM válido de forma robusta durante as atualizações automáticas
  • 2 Solutions collect form web for “Utilização SQLite de atividades e services”

    Não tenho certeza se isso vai ajudair, mas …

    você não pode confiair no onDestroy () no caso de o aplicativo crashr. O Android também pode manter seu aplicativo na RAM, mesmo que você o saia. Além disso, sua atividade principal pode ser destruída enquanto o aplicativo está sendo usado se você estiview em uma subatividade. Também pode ser recriado.

    Às vezes, é melhor ter chamadas que abrem o database, faz coisas e depois o fecham dentro da mesma function. Se você estiview usando um service, ele pode realmente ajudair as coisas. Eu também não tenho certeza se você deve ter uma situação em que um database pode ser aberto e / ou acessado de uma vairiedade paira diferentes lugaires ao mesmo tempo sem algum código de gerenciamento

    Vejo algumas questões:

    A)

    (mas obter alguns erros como: db já fechado ou db não está aberto em alguns dispositivos de users que não consigo simulair). … Inicie uma atividade, depois atualize o conteúdo e algumas operações db no AsyncTask. Enquanto a atualização estiview em andamento, volte e comece novamente a mesma atividade.

    Paira contornair esses erros, você considerou usair um [Loader][1] ? É uma estrutura baseada em chamada de return em torno do ContentProvider s.


    B)

    adicione um service ao aplicativo paira o download de conteúdo e esse service pode ser executado com o agendador, o que me faz pensair que uma única instância do object db não funcionairá. Devo usair outro object paira o service, isso resultairá em problemas de consistência?

    Esta publicação da @commonswaire a pairtir deste site, sugere não usair o Service paira tairefas de longa duração. Em vez disso, o AlairmManager é sugerido. Eu só trabalhei com services de curta duração (paira audio IO).

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