Vì vậy, chúng tôi đã thấy sdk xem trước và các công cụ mới gọn gàng như ActionBar và Fragments. Thực hiện rất nhiều cuộc gọi phương pháp sẽ không thể tránh khỏi để sử dụng chúng, vì vậy chiến lược nào có để duy trì 1 phiên bản của ứng dụng, điều này sẽ cho phép tôi sử dụng tất cả các công cụ mới nhưng cũng hoạt động trên các thiết bị chạy 2.3 trở xuống? Ứng dụng của tôi nhắm mục tiêu 1.5 - 2.3 vào lúc này.Chiến lược cho Tổ ong và khả năng tương thích ngược
Trả lời
API cùng một phân đoạn hiện khả dụng dưới dạng static library để sử dụng với các phiên bản Android cũ hơn; nó tương thích trở lại Android 1.6.
Có một vài thủ thuật bạn có thể sử dụng để xem liệu các API mới khác nhau có sẵn cho ứng dụng của bạn hay không. Nói chung, có thể bạn sẽ muốn tạo hai bộ hoạt động thay thế, một bộ sử dụng các API mới lạ (ActionBar, Animators, vv) - và một bộ khác không có.
Mã sau đây cho thấy cách bạn có thể sử dụng tính năng phản chiếu và ngoại lệ để xác định tính khả dụng của API phân đoạn và kiểm tra phiên bản để xác nhận xem các API Honeycomb khác có sẵn hay không.
private static boolean shinyNewAPIsSupported = android.os.Build.VERSION.SDK_INT > 10;
private static boolean fragmentsSupported = false;
private static void checkFragmentsSupported() throws NoClassDefFoundError {
fragmentsSupported = android.app.Fragment.class != null;
}
static {
try {
checkFragmentsSupported();
} catch (NoClassDefFoundError e) {
fragmentsSupported = false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startActivityIntent = null;
if (!shinyNewAPIsSupported)
startActivityIntent = new Intent(this, MainNonActionBarActivity.class);
else
startActivityIntent = new Intent(this, MainActionActivity.class);
startActivity(startActivityIntent);
finish();
}
Nói chung bạn có thể sử dụng cùng định nghĩa bố cục. Trong trường hợp Fragments có sẵn, bạn sẽ thổi phồng từng bố cục trong một Fragment khác, nơi chúng không phải là bạn có thể muốn sử dụng các thẻ <include>
để nhúng một số trong chúng vào một bố cục Hoạt động phức tạp hơn.
Một tác phẩm chi tiết hơn thông qua làm thế nào để viết mã để hỗ trợ tương thích ngược trên Honeycomb có thể được tìm thấy ở đây: http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
Bạn có thể tìm thấy Reto Meier's article on backwards-compatibility hữu ích, đặc biệt là phần có tiêu đề "Xử lý các lớp bị thiếu".
Tôi chưa tự xem SDK Honeycomb nhưng tôi thích bạn, hy vọng nó dễ sử dụng và không phức tạp để sử dụng các tính năng mới mà không gây nguy hiểm cho tính tương thích với các thiết bị cũ.
Ngoài ra kiểm tra bài này, cung cấp thêm ví dụ về cách làm việc với nhiều phiên bản nền tảng: http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html – adamp
Tôi đã đọc cả hai, nhưng có vẻ như Honeycomb sẽ được tham gia nhiều hơn, đặc biệt là với những thứ như Fragments và ActionBar. Bạn có nghĩ rằng sử dụng những kỹ thuật này sẽ là đủ? –
Thuận tiện, Dianne Hackborne của Google đã đăng a blog entry bao gồm chủ đề chính xác này. Google cho biết họ sẽ cung cấp các thư viện tĩnh để các phiên bản Android cũ hơn cũng sẽ có thể sử dụng các mảnh vỡ.
Vâng google vừa công bố tổ ong sẽ chỉ máy tính bảng: http://www.pcmag.com/article2/0,2817,2379271,00.asp
Vì vậy, nếu thiết bị của bạn có nghĩa là cho điện thoại di động chỉ này có thể không còn là một vấn đề.
Official Android sẽ giúp bạn đạt được ActionBar from 1.6 to 4.x
- 1. ISerializable và khả năng tương thích ngược
- 2. OpenGL Khả năng tương thích ngược
- 3. Khả năng tương thích ngược và Dịch vụ Web
- 4. API iOS 6 và khả năng tương thích ngược
- 5. Phiên bản WebSocket và khả năng tương thích ngược
- 6. match_parent khả năng tương thích
- 7. Khả năng tương thích ngược của Silverlight 5
- 8. OpenGL Core và Khả năng tương thích
- 9. Khả năng tương thích Meteor
- 10. JBoss: Khả năng tương thích JaxB DataHandler
- 11. Hoàn toàn hiểu các phiên bản .NET và khả năng tương thích ngược
- 12. Hỗ trợ của jQuery cho khả năng tương thích ngược tốt như thế nào?
- 13. Điều gì sẽ làm cho khả năng tương thích ngược không thể?
- 14. Khả năng tương thích IronPython 3
- 15. Khả năng tương thích D3 IE8?
- 16. Coldfusion/PHP Khả năng tương thích
- 17. Khả năng tương thích của .NET csc và Mono mcs
- 18. C# -Khả năng tương thích excelability
- 19. PrimeFaces và khả năng tương thích của trình duyệt
- 20. khả năng tương thích mã giữa OCaml và F #
- 21. Khả năng tương thích với IE và Socket.io
- 22. Khả năng tương thích của ARC và Bảng phân cảnh
- 23. khả năng tương thích giữa CPython và IronPython cPickle
- 24. Khả năng tương thích GCC 4.0, 4.2 và LLVM ABI
- 25. Khả năng tương thích liên kết giữa C++ và D
- 26. gcc và libstdC++ về phía trước khả năng tương thích
- 27. Tích hợp Newsstand mà không vi phạm khả năng tương thích ngược
- 28. Windows API Codepack Khả năng tương thích ngược trên Window XP
- 29. Khả năng tương thích ngược của lớp JDK 7 với JDK 6
- 30. Khả năng tương thích ngược của vectơ (de) tuần tự hóa với Boost.serialization
Ngoài ra nếu API bổ sung duy nhất bạn yêu cầu là thanh tác vụ, hãy xem thư viện mà tôi đã viết, đó là phần mở rộng của thư viện tương thích bổ sung thêm điều đó. Nó cung cấp một API duy nhất cho thanh tác vụ và cho phép sử dụng một chủ đề duy nhất. Bạn có thể tìm thêm thông tin tại http://actionbarsherlock.com. –