2012-04-15 7 views
7

Piszę aplikację na Androida, która jest przeznaczona dla poziomu API 15, ale chcę również zachować kompatybilność wsteczną ze starszymi poziomami API (min-sdk 7).Czy można używać tylu nieużywanych metod w kodzie zgodnym z wcześniejszymi wersjami?

mam zamiar osiągnąć to poprzez wprowadzenie warunków decydując, które kodują według aktualnego poziomu API używać (jak pokazano poniżej). Przypuszczam, że jest to dobre podejście, po prostu chcę, aby zapytać, czy wszystko jest w porządku, że tak wielu przestarzałe metody (jak display.getWidth()), ponieważ jest dość wiele zmian między poziomem API 8 i 15. a jeśli tak, to czy jest to dobre wykorzystanie z @SuppressWarning("deprecation") w tym przypadku?

Czy nie byłoby lepiej, aby korzystać z wielu plików APK na przykład na poziomie API < = 8 i> = 9? (Nawet jeśli nie jest to zalecane przez 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(); 
    } 

Dzięki

Odpowiedz

9

Trzeba zadać sobie kilka pytań.!

  • Czy to niezalecane dla poziomów API, które będą realizujących ten kod ?
  • Jeśli tak, to alternatywa sugerowane lub dostępne?

W przypadku, getWidth() jest przestarzałe na rzecz korzystania getSize(Point), który wymaga poziomu API 13. Więc przed poziomie API 13, wszystko co masz jest getWidth(), która w tym czasie nie była przestarzała. Powodem, dla którego te nieużywane metody są utrzymywane, jest w dużej mierze zgodność z kompatybilnością wsteczną (wraz z unikaniem łamania aplikacji każdego użytkownika, które są od niego zależne).

Tak, aby odpowiedzieć na Twoje pytania, tak, to jest w porządku w tym przypadku i tak, to jest dobre wykorzystanie @SuppressWarning("deprecation").

+0

jestem kierowania poziom API 15, więc to może być przestarzałe w niektórych wersjach systemu operacyjnego .. Wierzę również, że nie zawsze jest to alternatywa dla kodu nieaktualnych (lub raczej używam nowego API, który nie jest dostępny na stary te, więc muszę to naprawić, aby zachować kompatybilność). Cóż, to jest w porządku, aby mieć wiele takich warunkach, aby zachować wsteczną kompatybilność, czy jest to dobry pomysł, aby mieć dwa pliki APK na ICS (na przykład), a dla starszych wersji? –

+1

Jest w porządku i zachęcony. Jeśli wydasz dwie wersje aplikacji, jedną dla ICS, jedną dla pre-ICS, zaprosisz ogromny ból głowy, ponieważ wtedy będziesz musiał utrzymać dwie oddzielne bazy kodu. –

Powiązane problemy