Tôi đang xem xét việc sử dụng API sao lưu mới có sẵn từ Android 2.2, nhưng cần phải duy trì tính tương thích ngược (chính xác đến 1,5).BackupAgent tương thích ngược
Các tài liệu nhà nước:
Các dịch vụ sao lưu và các API bạn phải sử dụng là chỉ có sẵn trên các thiết bị chạy API Cấp 8 (Android 2.2) hoặc cao hơn, vì vậy bạn cũng nên thiết lập Android của bạn: thuộc tính minSdkVersion phải "số 8". Tuy nhiên, nếu bạn triển khai tính tương thích ngược thích hợp trong ứng dụng của mình, bạn có thể hỗ trợ tính năng này cho các thiết bị chạy API cấp 8 trở lên, trong khi vẫn tương thích với các thiết bị cũ hơn.
Tôi thực sự xây dựng so với mức 8 targetSdkVersion
với mức 3 minSdkVersion
và cố gắng sử dụng một lớp wrapper (với suy nghĩ) để khắc phục những vấn đề mà ứng dụng sẽ không chạy nếu bạn thực hiện một lớp học kéo dài một lớp nonexisting.
Đây là vấn đề: vì chúng tôi không thực hiện cuộc gọi thực tế đến lớp BackupHelper
, chúng tôi không thể kiểm tra trả trước nếu lớp thực sự tồn tại. (Như được giải thích trong tài liệu Tương thích ngược của Android với phương thức checkAvailable()
.) Do đó, lớp sẽ được khởi tạo và truyền tới một số BackupAgent
. Nhưng kể từ khi chúng tôi sử dụng phản chiếu, nó không thực sự ghi đè BackupAgent và một ngoại lệ xảy ra trong thời gian chạy khi sao lưu được yêu cầu:
java.lang.RuntimeException: Unable to create BackupAgent org.transdroid.service.BackupAgent: java.lang.ClassCastException: org.transdroid.service.BackupAgent
Đây là cách tiếp cận của tôi đến một tương thích ngược BackupAgent
: http://code.google.com/p/transdroid/source/browse/#svn/trunk/src/org/transdroid/service nơi BackupAgent.java là Lớp 'BackupAgentHelper' mở rộng và BackupAgentHelperWrapper 'thường xuyên' là lớp trình bao bọc dựa trên sự phản chiếu.
Bất kỳ ai thành công trong việc triển khai BackupAgent
với tính tương thích ngược?
Tôi tin rằng đã có một cuộc nói chuyện về việc này tại Barcamp năm nay tại Droidcon. Không thể nhớ tên của người đó, nhưng đáng để tìm kiếm. –