Подтвердить что ты не робот

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

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

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

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

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Аннотации 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_.

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

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

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

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

Следует ли использовать его?

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

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

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

Ответ 2

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

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

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

Ответ 3

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

  • Создайте проект Android с шаблоном "Empty Activity".
  • Отредактируйте 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'
    ==>     }
        }
    }
    
  • Отредактируйте приложение /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'
    }
    
  • Добавьте 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" />
    

  • Измените имя активности на "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>
    

  • Теперь ваш 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!");
        }
    }
    
  • Попробуйте запустить его с помощью устройства или эмулятора, чтобы увидеть, насколько он работает.

Ответ 4

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

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

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

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

Ответ 5

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