Какие распределенные базы данных существуют для приложений на Android?

В android studio создал сервис и приложение - это два разных проекта (приложения), которые работают на одном устройстве. И тот и другой использует базу данных SQLite, но если я правильно понял, у каждого проекта своя собственная база данных, а мне нужно чтобы данные были общими. В связи с этим два вопроса:
1. Правильно ли я понял, что созданная в приложении база данных ( в sqlite) является локальной и другие приложения к её данным доступа не имеют?
2. Посоветуйте, какая база данных в моём случае подходит?
  • Вопрос задан
  • 332 просмотра
Решения вопроса 2
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Да, правильно понял.
Правильный способ шарить - Content Provider. К нему можно прикрутить StorIO для очеловечивания интерфейса.
Ответ написан
thelongrunsmoke
@thelongrunsmoke
Программист
Можно создавать и хранить базу вне приватной директории, например, где-нибудь на SD карте. Тогда доступ будет у любого приложения.
Однако, правильный способ решения этого вопроса, в рамках Андроида, использовать ContentProvider.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AleksandrFl
локальную базу данных можно сделать с помощью библиотеки Room (удобней Sqlite) и Dagger. Ниже простой рабочий
href="https://yadi.sk/d/9Y7JeDhSHNODTQ?w=1"
пример приложения Room- локальная база данных, Dagger - подключить любой класс
package com.example.myapplicationroom.data.db.dbInstance

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.example.myapplicationroom.data.db.dao.EmployeeDao
import com.example.myapplicationroom.data.db.entity.Employee

@Database(
    entities = [
        Employee::class],
    version = 1
)
abstract class LocalDatabase: RoomDatabase() {
    abstract fun getEmployeeDao(): EmployeeDao





    companion object {
        @Volatile
        private var INSTANCE: LocalDatabase? = null

        fun getDatabase(context: Context): LocalDatabase {
            val tempInstance = INSTANCE
            if (tempInstance != null) {
                return tempInstance
            }
            synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    LocalDatabase::class.java,
                    "NoteDatabase"
                ).fallbackToDestructiveMigration().build()
                // ^^^ Без миграции ^^^

                INSTANCE = instance
                return instance
            }
        }
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы