2012-04-15 18 views
7

Tôi đang viết một ứng dụng Android được nhắm mục tiêu đến cấp API 15 nhưng tôi cũng muốn giữ sự tương thích ngược với các mức API cũ hơn (min-sdk 7).Có OK có nhiều phương pháp không được chấp nhận trong mã tương thích ngược không?

Tôi sẽ tiếp cận điều này bằng cách đặt điều kiện quyết định mã sẽ sử dụng theo cấp API hiện tại (như được hiển thị bên dưới). Tôi cho rằng đây là một cách tiếp cận tốt, tôi chỉ muốn hỏi liệu có quá nhiều phương pháp không được chấp nhận (như display.getWidth()), bởi vì có khá nhiều thay đổi giữa API cấp 8 và 15. Và nếu có, nếu đó là cách sử dụng tốt trong số @SuppressWarning("deprecation") trong trường hợp này? Bạn có thể sử dụng nhiều APK ví dụ cho các cấp độ API < = 8 và> = 9 không? (Mặc dù nó không được khuyến khích bởi developer.android.com

Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    Point screenSize = new Point(); 

    // calculate the width 
    float width; 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
     display.getSize(screenSize); 
     width = screenSize.x; 
    } else { 
     width = display.getWidth(); 
    } 

Cảm ơn

Trả lời

9

Bạn phải tự hỏi mình một số câu hỏi:.!

  • Đó có phải là bị phản đối cho các cấp API sẽ được thực thi mã này ?
  • Nếu có, đề xuất thay thế hoặc có sẵn?

Trong trường hợp của bạn, getWidth() không còn được dùng để sử dụng getSize(Point), yêu cầu cấp API 13. Vì vậy, trước cấp API 13, tất cả những gì bạn có là getWidth(), tại thời điểm đó không được dùng nữa. Lý do các phương pháp không được chấp nhận này được lưu giữ xung quanh phần lớn là có khả năng tương thích ngược (cùng với việc tránh các ứng dụng của mọi người phụ thuộc vào nó).

Vì vậy, để trả lời câu hỏi của bạn, vâng, điều này là tốt trong trường hợp này, và có, đó là cách sử dụng tốt của @SuppressWarning("deprecation").

+0

Tôi đang nhắm mục tiêu API cấp 15 nên có thể sẽ không còn được dùng cho một số phiên bản hệ điều hành nữa. Tôi cũng tin rằng luôn có thay thế cho mã không dùng nữa (hoặc đúng hơn, tôi đang sử dụng API mới không có sẵn trên cũ những cái này, vì vậy tôi phải sửa nó để duy trì tính tương thích). Tốt, bạn có thể có nhiều điều kiện để giữ tính tương thích ngược hay tốt hơn là nên có hai APK cho ICS (ví dụ) và cho các phiên bản cũ hơn? –

+1

Nó tốt và được khuyến khích. Nếu bạn phát hành hai phiên bản ứng dụng của mình, một phiên bản cho ICS, một phiên bản dành cho ICS trước, bạn đang mời một cơn đau đầu lớn kể từ đó bạn sẽ phải duy trì hai cơ sở mã riêng biệt. –