Что такое Android Annotations и почему мы используем аннотации Android?

Я хочу знать об аннотациях Android, лучше ли это использовать во всех проектах Android ?.

Если правильно, как его реализовать. Есть ли хороший учебник для этого?

Если это неправильный путь. Какова черта аннотаций Android?

Заранее спасибо за помощь.

Solutions Collecting From Web of "Что такое Android Annotations и почему мы используем аннотации Android?"

Аннотации Android – это аннотация, основанная на аннотациях, которая позволяет упростить код в ваших приложениях и уменьшает шаблон шаблонов общих шаблонов, таких как установка прослушивателей кликов, принудительное выполнение и / или выполнения потоков нитей и т. Д.

У вас может получиться что-то вроде этого:

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView descriptionTextView = (TextView) findViewById(R.id.tv_description); final Button hideButton = (Button) findViewById(R.id.btn_hide); hideButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { descriptionTextView.setVisibility(View.INVISIBLE); } }); } } 

Что-то вроде этого:

 @EActivity(R.layout.activity_main) public class MainActivity extends AppCompatActivity { @ViewById(R.id.tv_description) TextView mDescriptionTextView; @Click(R.id.btn_hide) protected void onHideButtonClick() { mDescriptionTextView.setVisibility(View.INVISIBLE); } } 

Как это работает

Вы аннотируете свои действия и компоненты, тогда обработчик аннотаций генерирует классы (во время компиляции), которые расширяют ваши действия и компоненты (т. MainActivity Ваши действия не могут быть окончательными) с суффиксом подчеркивания по умолчанию, поэтому, если у вас есть MainActivity , теперь у вас также будет Класс MainActivity_ .

Этот новый класс содержит хорошо написанный шаблонный код, который делает то, что указывает аннотация.

Как реализовать

Я написал этот учебник о том, как интегрировать аннотации Android и даже включить пример того, как тесты интеграции обновляются, проверьте здесь .

Этот учебник действительно на сегодняшний день, используя Android Studio 1.5.1, и он пытается немного объяснить, как работает внутреннее устройство.

Должны ли вы использовать его?

Я бы сказал, что если у вас есть проект с небольшим спросом, это прекрасно. Это упростит чтение кода . Но если ваше приложение больше и содержит много навигационных потоков со сложными жизненными циклами активности / компонентов, его можно немного усложнить или сложно отлаживать и понимать ошибки, если что-то не соответствующим образом аннотируется.

Из-за того, как работают аннотации Android, они внедряются в жизненный цикл и делают это, теперь вы @ViewById от их жизненного цикла (например, если вы аннотируете свои представления с помощью @ViewById , то вы не можете ссылаться на них в onCreate() , вам нужно сделать Метод и аннотировать его с помощью @AfterViews и когда этот метод будет выполнен, ваши представления готовы к использованию). Это не обязательно проблема, вам просто нужно хорошо понимать поведение Android и хорошо, поведение Android Annotations.

Таким образом, как и в любой библиотеке, если вы зависите от нее, вы можете зависеть от нее, поэтому вы можете очень хорошо понять, как она работает. Теперь ваш проект зависит от чужого.

Я не использую аннотации Android, больше нет. Когда я использовал эту библиотеку, это было ошибкой и отлаживало кошмар. Другим недостатком является то, что он снижает переносимость вашего кода. Если вы работаете в одиночку в проекте, тогда все в порядке, у вас нет этой проблемы, но когда вы работаете в команде, вы должны подумать об этом.

Если вы хотите его использовать, на их сайте есть много учебников.

Альтернатива: если вы хотите уменьшить количество кода, делая его очень простым в использовании и понимании, я предлагаю вам библиотеку Butter Knife . Я использую много и до сих пор не встречал никаких ошибок. Очень прост в использовании и чтении.

Вот пример с Android Studio.

  1. Создайте проект Android с шаблоном «Empty Activity».
  2. Отредактируйте project_root / build.gradle

     buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' ==> classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } allprojects { repositories { jcenter() ==> maven { ==> url = 'https://oss.sonatype.org/content/repositories/snapshots' ==> } } } 
  3. Отредактируйте приложение / build.gradle

     apply plugin: 'com.android.application' apply plugin: 'android-apt' <============ android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.just.myapplication" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' ==> apt "org.androidannotations:androidannotations:4.0-SNAPSHOT" ==> compile 'org.androidannotations:androidannotations-api:4.0-SNAPSHOT' } 
  4. Добавьте TextView и кнопку в основной макет, activity_main.xml

     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Not Click Yet" android:id="@+id/textView"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:id="@+id/button" android:text="Click" android:layout_below="@+id/textView" /> 

  5. Измените имя активности на «MainActivity_» в AndroidManifest.xml

     <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> ==> <activity android:name=".MainActivity_"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> 

  6. Теперь ваш MainActivity.java можно упростить, как показано ниже.

     package com.just.myapplication; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; @EActivity (R.layout.activity_main) public class MainActivity extends AppCompatActivity { @ViewById(R.id.textView) TextView mText; @Click void button() { mText.setText("Button Clicked!"); } } 
  7. Попробуйте запустить его с помощью устройства или эмулятора, чтобы увидеть, насколько это просто.

Аннотации Android – это сторонняя библиотека, которая была сделана для всего одного инструмента для Android. Его способность к инъекции зависимостей, обработке потоков и т. Д. Я не рекомендую использовать его; Он глючит и нестабилен. В моей текущей работе я работаю над проектом, и моя задача – удалить аннотации Android. Я бы предложил использовать кинжал 2, Butterknife и RxJava

Аннотации Android – это библиотека, которая «автогенерирует» код для нас, используя некоторые атрибуты или анотации, такие как @EActivity, @ViewById, @OnClick. Он предназначен для облегчения и уменьшения времени кодирования.

«AndroidAnnotations – это платформа с открытым исходным кодом, которая ускоряет разработку Android. Она заботится о сантехнике и позволяет сосредоточиться на том, что действительно важно. Благодаря упрощению вашего кода это облегчает его обслуживание».

(Документация здесь: https://github.com/excilys/androidannotations/wiki )

Но … Мы не используем его, я полностью согласен с ответом DDsix. Используйте принципы и код SOLID, которые должны быть закодированы, когда и где это должно быть …