Câu hỏi của tôi là tôi nghĩ khá đơn giản nhưng tôi không nghĩ câu trả lời sẽ là ... Tôi có khá nhiều nội dung trong ứng dụng của mình để làm cho nó chạy đúng, và tôi đang nghĩ đến việc đặt tất cả nó vào một cơ sở dữ liệu, và phân phối nó trong một cơ sở dữ liệu được nhúng với ứng dụng trên thị trường. Vấn đề duy nhất là tôi không biết làm thế nào để làm điều đó. Tôi biết rằng tôi có thể trích xuất một tệp .db từ Eclipse DDMS với nội dung của cơ sở dữ liệu của tôi, và tôi giả sử tôi cần đặt nó vào thư mục tài sản của ứng dụng của mình, nhưng sau đó cách làm cho ứng dụng sử dụng nó để tạo lại ứng dụng cơ sở dữ liệu? Nếu bạn có bất kỳ liên kết nào đến một số mã hoặc trợ giúp, điều đó thật tuyệt. Cảm ơnNhúng cơ sở dữ liệu vào .apk của ứng dụng được phân phối [Android]
Trả lời
Vâng để đạt được những gì bạn đang yêu cầu, bạn có thể đặt các tập tin .db trong tài sản của bạn/thư mục và sao chép nó vào vị trí lần đầu tiên bạn khởi động ứng dụng của bạn .....
final String DB_DESTINATION = "/data/data/YOUR_PACKAGE_NAME/databases/MyDatabaseFile.db";
// Check if the database exists before copying
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
if (initialiseDatabase == false) {
// Open the .db file in your assets directory
InputStream is = getContext().getAssets().open("MyDatabaseFile.db");
// Copy the database into the destination
OutputStream os = new FileOutputStream(DB_DESTINATION);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0){
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
}
Trường hợp "initialiseDatabase" là một số cờ chỉ ra nếu ứng dụng đã được khởi chạy lần đầu tiên.
Mặc dù, nếu bạn đang xem lưu trữ nhiều dữ liệu, như bạn đã đề cập: Tôi khuyên bạn không nên bloating tệp APK với nó và sử dụng kết nối Internet để tải xuống bản ghi cơ sở dữ liệu (từ máy chủ lưu trữ) sau ứng dụng đã được khởi chạy. Bằng cách này, bạn có thể hiển thị thanh tiến trình cho biết người dùng tại sao họ chờ đợi một thời gian dài để bắt đầu sử dụng ứng dụng. Làm cho APK đặc biệt lớn thường ngăn người khác cài đặt nó ngay từ đầu.
Bạn có thể triển khai giải pháp trung gian: Sử dụng cách tiếp cận ở trên, nhưng thay vì phân phối tệp db đặt nó trên máy chủ ở đâu đó. Theo kinh nghiệm của tôi, chỉ có 10% thời gian xử lý, phần còn lại của nó là phân tích và tuần tự hóa hình ảnh thành db
Thực ra mục đích của tôi là tránh đặt nó trên máy chủ và tải xuống trực tiếp sau khi cài đặt ứng dụng ... – Sephy
Tôi hiểu. Tôi đã xem xét nó cho ứng dụng của tôi nhưng sau đó tôi nhìn vào kích thước db và khác của nó + 350K. Mọi người rất nhạy cảm về điều đó, nhưng nếu bạn có kết nối tốt, nó chắc chắn sẽ nhanh hơn tải xuống từng phần với quá trình xử lý tiếp theo – Bostone
- 1. Phân phối cơ sở dữ liệu
- 2. Tạo cơ sở dữ liệu nhúng Sqlite từ ứng dụng
- 3. Cơ sở dữ liệu nhúng cho ứng dụng windows 8
- 4. Có dễ sử dụng cơ sở dữ liệu quan hệ được phân phối không?
- 5. Nạp dữ liệu vào cơ sở dữ liệu từ ứng dụng Android qua dịch vụ web
- 6. Cơ sở dữ liệu nhúng cho .net
- 7. Android, hai ứng dụng một cơ sở dữ liệu?
- 8. Cơ sở dữ liệu nhúng của H2 lưu trữ dữ liệu ở đâu?
- 9. cơ sở dữ liệu Oracle nhúng JVM
- 10. tìm kiếm cơ sở dữ liệu giá trị khóa được phân phối cho sự kiên trì
- 11. Thêm cơ sở dữ liệu SQLite vào ứng dụng iPhone
- 12. Cập nhật cơ sở dữ liệu Android
- 13. Chỉ định url của jdbc: cơ sở dữ liệu nhúng
- 14. Ẩn danh cơ sở dữ liệu ứng dụng của bạn
- 15. schema Cơ sở dữ liệu của ứng dụng nhắn tin
- 16. Điền vào cơ sở dữ liệu Android Từ tệp CSV?
- 17. Một cơ sở dữ liệu người dùng phục vụ nhiều cơ sở dữ liệu ứng dụng
- 18. Android ADB truy cập vào cơ sở dữ liệu ứng dụng mà không có gốc
- 19. Gói và sử dụng cơ sở dữ liệu nhúng (tệp H2.db) bên trong một Jar?
- 20. Tạo cơ sở dữ liệu ứng dụng android với số lượng lớn dữ liệu
- 21. Cơ sở dữ liệu nhúng tốt cho Qt?
- 22. Android thêm MMS vào cơ sở dữ liệu
- 23. Cơ sở dữ liệu SQLite của Android: chèn chậm
- 24. Tách biệt cơ sở dữ liệu thử nghiệm của ứng dụng Sinatra từ cơ sở dữ liệu phát triển?
- 25. Cơ sở dữ liệu Android tái tạo mọi ứng dụng được khởi chạy
- 26. Cách thay thế tệp cơ sở dữ liệu sqlite hiện có bằng tệp cơ sở dữ liệu mới trong android
- 27. Cách sử dụng nhiều cơ sở dữ liệu trong ứng dụng Rails Sử dụng cơ sở dữ liệu
- 28. onUpgrade() cơ sở dữ liệu sqlite trong Android
- 29. Cơ sở dữ liệu "tốt nhất" để nhúng là gì?
- 30. Làm cách nào để xem thông tin cơ sở dữ liệu Ứng dụng Android của tôi?
Vâng, trước đây tôi đã sử dụng thanh tiến trình, nhưng khi tôi tải xuống rất nhiều ảnh và phân tích cú pháp XML , phải mất khá nhiều thời gian, đặc biệt là khi bạn sử dụng mạng 3G thay vì wifi – Sephy
nó sẽ không dễ dàng hơn để chỉ kiểm tra nếu cơ sở dữ liệu đã tồn tại thay vì sử dụng boolean? Làm cách nào để theo dõi boolean khi ứng dụng bị tắt? nhập trong DB? – Sephy
Đó là chính xác những gì boolean đại diện, tôi để lại đó như là một bài tập thực hiện. Tôi đã cập nhật mã ví dụ về cách bạn có thể thực hiện việc này. – seanhodges