2014-12-04 2 views
2

Защитить метод invoke для android просто, просто поместите Build.VERSION.SDK_INT> = xx в порядке, между тем мы можем добавить «@SuppressLint (« NewApi »)» на не проверяйте это.Android: как защитить внутренний класс от низкого уровня API

Но как насчет внутреннего класса, расширяющего класс или реализующего интерфейс для высокого уровня API? Например, AutoFocusMoveCallback доступен только по API 16 и выше

private class OnAutoFocusMoveCallback implements AutoFocusMoveCallback { 

    @Override 
    public void onAutoFocusMoving(boolean start, Camera camera) { 
     // TODO 

    } 

} 

Как решить этот случай?

ответ

1

Решает эту проблему.

Объявление такого внутреннего класса, которое связано с классами/интерфейсами в высоком API, в порядке.

Просто убедитесь, что защита инстанцирования/с использованием таких классов с Build.VERSION.SDK_INT> = ой, как показано ниже:

if (Build.VERSION.SDK_INT >= 16) { 
     mAutoFocusMoveCallback = new OnAutoFocusMoveCallback(); 
    } 
Смежные вопросы