2011-08-19 30 views
9

Tôi có một ứng dụng thư viện nơi tôi lưu trữ mỗi cuốn sách như một SqliteDatabase. Tôi lưu tất cả các dbs sách trên sdcard. Câu hỏi của tôi là nếu người dùng gỡ cài đặt ứng dụng của tôi, sau đó thực hiện tất cả các dbs liên quan đến ứng dụng này sẽ bị xóa? Nếu không, làm thế nào tôi có thể đạt được điều này?Việc gỡ cài đặt ứng dụng android có xóa cơ sở dữ liệu được lưu trữ trên sdcard không?

Cảm ơn.

Trả lời

9

chung Không thực sự. Khi bạn gỡ cài đặt, chính APK đó (/data/app/com.example.app-1.apk) và dữ liệu (sharedprefs/db/etc) trong /data/data/com.example.app bị xóa, nhưng chỉ Android > = 2.2 cũng sẽ xóa mọi thứ khỏi sdcard và chỉ một thư mục cụ thể (/sdcard/Android/data/com.example.app thường).

Tuy nhiên, một số phiên bản trước của Froyo cũng sẽ là delete when updating một ứng dụng khiến việc sử dụng lưu trữ liên tục trở nên nguy hiểm hơn.

+0

Ok, vậy tôi nên lưu trữ các tệp này ở đâu và ở đâu để tránh các hành vi khó lường như vậy? Nếu được lưu trữ trên bộ nhớ trong thì nó sẽ sớm được lấp đầy và nó bắt đầu cho SqliteFullException. Tùy chọn tốt nhất có thể để lưu trữ số lượng tệp lớn như vậy là gì? – techno

+0

Tôi sử dụng /sdcard/data/com.example.app. Nó nhất quán ở chỗ nó sẽ không bao giờ bị xóa khi gỡ cài đặt hoặc cập nhật. Và nó không phải ở cấp độ gốc nên người dùng sẽ không ghét đống lộn xộn mà nó để lại. Thay vì hardcoding "/ sdcard", hãy sử dụng Environment.getExternalStorageDirectory() và nối thêm/data/và tên gói của bạn. –

+0

Vì vậy, nếu tôi sử dụng /sdcard/data/com.example.app, thì tất cả các dbs sẽ bị xóa khi gỡ cài đặt, đúng không? Ngoài ra, người dùng có thể truy cập các tệp này không? – techno

2

Điều đó tùy thuộc. Nếu bạn đặt các tệp của mình trên một số vị trí tùy ý trên bộ nhớ ngoài (thẻ SD), chúng sẽ không bị xóa sau khi bạn gỡ cài đặt ứng dụng của mình. Nếu bạn đã sử dụng getExternalFilesDir() (Android 2.2+) để lấy thư mục lưu trữ tệp của mình, chúng sẽ bị xóa khi ứng dụng được gỡ cài đặt. Trên một số phiên bản đầu tiên của Froyo, có vẻ như một lỗi xóa các tập tin ngay cả trên nâng cấp ứng dụng, vì vậy bạn có thể muốn xem ra cho điều này.

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