Tôi đã thử một số cách để làm điều này, mỗi không có sẵn.
Trước tiên, tôi đã thử thêm triển khai Di chuyển vào Phòng bằng phương pháp 'addMigrations', nhưng thấy rằng nó chỉ chạy trong khi nâng cấp cơ sở dữ liệu, nhưng không phải khi tạo.
Sau đó, tôi đã thử chuyển qua triển khai SQLiteOpenHelper cho Phòng bằng phương thức 'openHelperFactory'. Nhưng sau khi tạo ra một loạt các lớp học để có được các công cụ sửa đổi truy cập cấp gói của Room, tôi đã từ bỏ nỗ lực này. Tôi cũng đã thử subclassing FrameworkSQLiteOpenHelperFactory của lớp nhưng một lần nữa, trình sửa đổi truy cập cấp gói của constructor của nó không hỗ trợ điều này.
Cuối cùng, tôi đã tạo một IntentService để điền dữ liệu và gọi nó từ phương thức onCreate của lớp con Ứng dụng của tôi. Cách tiếp cận này hoạt động nhưng một giải pháp tốt hơn nên là bản sửa lỗi sắp tới cho vấn đề theo dõi được đề cập bởi Sinigami ở nơi khác trên trang này.
Darryl
[Added 19 tháng 7 năm 2017]
Vấn đề này trông như thể nó giải quyết trong Phòng 1.0.0. Alpha 5. Phiên bản này đã thêm một cuộc gọi lại vào RoomDatabase cho phép bạn thực thi mã khi cơ sở dữ liệu được tạo lần đầu tiên. Hãy xem tại địa chỉ:
https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Callback.html
Nguồn
2017-07-09 23:05:52
Bạn có thể cung cấp một cơ sở dữ liệu được phổ biến trước. Và làm việc trên cái đó. –