2017-02-02 2 views
1

Я новичок в разработке Android. У меня вопрос относительно использования Reflection API в Android.Использование отражения в Android плохой дизайн?

Как, например, я могу написать некоторый код, как это подключить Bluetooth:

 try { 
     Method connectMethod = proxy.getClass().getDeclaredMethod("connect", BluetoothDevice.class); 
     if(!((Boolean) connectMethod.invoke(proxy, device))){ 
      Log.i(TAG, "Unable to start connection"); 
     } else { 
      Log.i(TAG, "Connection Successful"); 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "Unable to reflect android.bluetooth.BluetoothPan", e); 
    } 

Аналогично другие API-интерфейсы могут быть использованы для установки привязывать и делать другие материалы. Эти функции (например, набор привязок) должны выполняться пользователем из приложения «Настройка» в телефоне.

Это мои вопросы?

  1. Не рекомендуется ли использовать отражение в разработке android?
  2. Если я создаю пользовательские разрешения для этих функций и добавляю к разрешениям пользователя, то это поддерживается дизайном? Поскольку для доступа API доступа нет специального разрешения (разрешения пользователя).
  3. В соответствии с шаблоном проектирования Android, является ли табу использовать API-интерфейс отражения?
+0

Если вы используете его для доступа к методам и полям, у вас обычно нет доступа, это определенно помещает вас на тонкий лед. – Henry

+0

@ Хенри: Спасибо за ваш ответ. Но вы можете объяснить с помощью некоторого примера. Например, я разрабатываю одно приложение, которое работает только с привязкой, поэтому каждый раз, когда пользователь должен перейти в Настройки и начать модем вручную. Если я делаю ту же работу, используя отражение, я нахожусь на «тонком льду» ?? – Saby

+1

Да, потому что вы что-то делаете, разработчики API не поддерживают. Это может сломаться при каждом обновлении версии. – Henry

ответ

1

Отражение является медленным. Хотя на новых версиях Android это не так уж плохо. Большая проблема с отражением заключается в том, что используемые вами классы могут измениться, и вы не заметите, потому что компилятор не знает. Это особенно плохо, когда вы используете его для доступа к стороннему коду, который не находится под вашим контролем, или внутреннему apis, которые не предназначены для общественного потребления. По сути, это считается плохой практикой в ​​целом, но тем более на Android из-за последствий для производительности. Как правило, я никогда не буду делать ничего с размышлениями, которые можно сделать без него.

-1
  1. Это хорошо, чтобы знать понятие о том, когда и где использовать отражение в андроиде развития
  2. Да будет поддерживаться конструкцией.
  3. В соответствии с шаблоном проектирования Android все еще зависит от функции или приложения, которое вы будете делать, чтобы использовать API отражения, если это необходимо, мы должны использовать его.
0

1) Отражение следует избегать, если это возможно. Он очень хакен, очень хрупкий (легко ломается от обновлений), трудно поддерживать и часто приводит вас в плохие ситуации, пропуская важные шаги валидации/настройки. Иногда это единственное решение - эти ситуации довольно редки и не часто появляются на рынке Android-разработки.

2) Вы можете добавлять пользовательские разрешения на Android, но я не вижу, как это уместно. Пользователь не будет знать, что такое отражение или когда оно используется. Разрешения следует использовать, когда вам нужно попросить у пользователя авторизацию определенных действий (с использованием местоположения, совершения вызовов и т. Д.).

3) Несколько, да. Отражения следует избегать, если это вообще возможно, по причинам, перечисленным выше.

Смежные вопросы