2011-09-21 59 views
6

Lần đầu tiên đăng bài và lần đầu tiên làm việc trên Android, vì vậy hãy dễ dàng nếu tôi vi phạm bất kỳ quy tắc nào :)Lưu trữ dữ liệu lớn cục bộ hoặc trực tuyến cho ứng dụng Android?

Dù sao, tôi vừa tạo ra một ứng dụng Android và tôi đang cố tạo một trò chơi đố đơn giản. Tôi dự định có nhiều câu hỏi (hy vọng khoảng 5000 câu hỏi) được thực hiện. Không có thao tác dữ liệu nào được thực hiện, chỉ cần đọc thẳng các câu hỏi và trình bày nó cho người dùng. Tôi bây giờ phải đối mặt với sự pha loãng trong cách lưu trữ các câu hỏi.

Tôi có hai lựa chọn:

1.) Bundle các câu hỏi với các ứng dụng: Có thể lưu trữ các thông tin trong SQLite. Ban đầu, vì mục đích demo, tôi đặt các câu hỏi trong một tệp XML, nhưng tôi nhanh chóng nhận ra rằng nó sẽ không hiệu quả khi các câu hỏi bắt đầu chồng chất. Trước tiên, tôi lo ngại nếu mở một tệp XML khổng lồ như vậy sẽ hút bộ nhớ của Android. Thứ hai, tôi lo lắng về việc ứng dụng sẽ lớn bao nhiêu nếu nó chứa hơn 5000 câu hỏi. Tôi read here về những ưu điểm của XML so với SQLite. Trong ví dụ đó, người dùng có 70.000 mục nên có thể 5.000 câu hỏi của tôi sẽ là đủ?

HOẶC

2.) chủ các câu hỏi trên máy chủ: Tôi tin rằng xu hướng tăng là ứng dụng sẽ không cần phải được đi kèm với một số lượng lớn các câu hỏi và sẽ không cần phải lo lắng về logic mở và lắp ráp các câu hỏi. Nó sẽ chỉ nhấn một trang PHP và tùy thuộc vào các tham số được gửi, trang PHP sẽ trả về các câu hỏi ở định dạng XML. Nhược điểm là người dùng sẽ cần phải trực tuyến (để lấy các câu hỏi) để chơi trò chơi và máy chủ của tôi sẽ cần phải hoạt động 24/7.

Có ai gặp phải vấn đề về thiết kế này về cách thức và nơi lưu trữ lượng dữ liệu khổng lồ trong ứng dụng Android không?

Cảm ơn, mọi trợ giúp sẽ được đánh giá cao!

+4

Tôi nghĩ điều ngược lại cũng nên được đề cập: KHÔNG vi phạm bất kỳ quy tắc nào (đặc biệt là câu hỏi đầu tiên của bạn). 1 cho một câu hỏi rõ ràng, được viết và định dạng rõ ràng cho thấy nỗ lực nghiên cứu và suy nghĩ. Chào mừng bạn đến với StackOverflow. :) –

Trả lời

7

Từ quan điểm tiếp thị, tôi nghĩ cách tiếp cận phù hợp là # 1. Chỉ cần nhìn vào danh sách ứng dụng hàng đầu, nó chứa đầy các ứng dụng hoạt động ngoại tuyến. Tôi không biết tại sao hầu hết mọi người không đề cập đến tiêu chí quan trọng này khi họ nói về ứng dụng tiếp thị ... đặc biệt là trong Android, nơi nhiều người không có gói dữ liệu. Thêm vào đó, một ứng dụng đố có vẻ giống như một cái gì đó mà ai đó có thể sử dụng khi đi làm trong một chuyến tàu như trái ngược với một cái gì đó như Facebook Chat mà họ sẽ sử dụng khi họ trực tuyến.

Từ góc độ kỹ thuật, việc lưu trữ hơn 5000 câu hỏi thực sự sẽ không mất nhiều dung lượng. Có ứng dụng này được gọi là "MyFitnessPal". Nó lưu trữ hơn 30.000 loại thực phẩm trong cơ sở dữ liệu SQlite, với thông tin dinh dưỡng. Vì vậy, đừng đánh giá quá cao không gian sẽ mất bao nhiêu.

Lợi thế của việc đi với # 2 là nếu các câu hỏi hoặc câu trả lời thay đổi thường xuyên, bạn có thể muốn đi theo cách tiếp cận đó.

+0

Vâng, đó là chính xác những gì tôi đã nghĩ đến - về người dùng không thể chơi trò chơi trực tuyến. Vì vậy, tôi đã kiểm tra kích thước của XML với một nghìn câu hỏi và bạn đã đúng, nó là khá nhỏ. Tôi thực sự nghĩ đến việc bỏ qua toàn bộ phương pháp tiếp cận cơ sở dữ liệu vì Android dường như làm một công việc tốt trong việc mở tệp XML (ít nhất là với hàng nghìn mục) và phân tích cú pháp thông qua thông tin mà không phàn nàn - mà tôi đã sợ trước đây. – RaKku

2

Tôi nghĩ rằng lựa chọn tốt nhất cho bạn là lưu trữ các câu hỏi trong SQLite. Bằng cách này, người dùng có thể truy cập vào trò chơi của bạn ngay cả khi họ đang ngoại tuyến, đó là một trong những điều quan trọng như Hisoka đã đề cập. Vì vậy, tôi nghĩ bạn nên thử sử dụng SQLite.

Các vấn đề liên quan