powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / AndroidAnnotations
16 сообщений из 41, страница 2 из 2
AndroidAnnotations
    #39173749
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибсаннотации. на скорость как влияют,
Считай это макросами. Как-бы ты сам писал, но много работы сделали за тебя.
Присутствует некоторая избыточность (она в основном в подготовке вьюхи), но на мой взгляд не значительная.

ViewById:
Код: java
1.
2.
3.
4.
        cbActive = ((CheckBox) hasViews.findViewById(id.cbActive));
        radioSilence = ((RadioButton) hasViews.findViewById(id.radioSilence));
        radioAllow = ((RadioButton) hasViews.findViewById(id.radioAllow));
        buttonOk = ((Button) hasViews.findViewById(id.buttonOk));



Background:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 @Override
    public void showMessages() {
        handler_.post(new Runnable() {


            @Override
            public void run() {
                MessagesActivity_.super.showMessages();
            }

        }
        );
    }
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39173984
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибса глуппый вопрос,
аннотации. на скорость как влияют,

или это настолько незначительно, что можно пренебречь ?
никак не влияет - никакой рефлексии и т.д.. гугли что такое annotation processing. в двух словах, на этапе компиляции генерятся новые классы-наследники, в которых запрятан весь спагетти-код типа findViewById., работа с потоками и всякие приятные мелочи типа автоматичеких (onSaveInstanceState/OnRestoreInstanceState), аргументы, экшены и т.д. Т.е. ты в манифест пишешь не MyActivity, а MyActivity_ (extends MyActivity) и стартуешь ее MyActivity_.intent().start() - кодить при этом продолжаешь в MyActivity.
там куча всего разного - просто полистай https://github.com/excilys/androidannotations/wiki/AvailableAnnotations и почитай что они делают

Имхо must have для ЛЮБОГО проекта.
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39174343
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, я просто думал, что там много на рефлексиях.
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39174351
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжибсОк, я просто думал, что там много на рефлексиях.
там ее нет вовсе. вернее есть на этапе компиляции. в рантайме нет
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39188735
ыудусе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС, добавьте, наверное, в старттопик

Этот вариант
Код: java
1.
        androidManifestFile variant.outputs[0].processResources.manifestFile



может вызывать ошибку:

Код: java
1.
Error:(7, 0) Cannot get property 'processResources' on null object



Лечится вот так:

Код: java
1.
        androidManifestFile variant.outputs[0]?.processResources?.manifestFile



https://github.com/excilys/androidannotations/issues/1606
https://github.com/excilys/androidannotations/wiki/Building-Project-Gradle
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39188741
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ыудусеможет вызывать ошибку:
Не только эту, но при той конфигурации, что я указал (с теми версиями в зависимостях), ошибок не будет.

Если брать последние apt и gradle то да, ошибки есть. У меня вылезла "Cant open file".

Поправлю, спасибо.
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39204040
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вышла 4-я версия, убежал читать, что новенького
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39220970
ыудусе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно как нибудь заиньектить абстрактный бин с реализацией абстрактного метода?
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39220979
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ыудусеА можно как нибудь заиньектить абстрактный бин с реализацией абстрактного метода?
что за бредовый вопрос?
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39221022
ыудусе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaчто за бредовый вопрос?

Почему бредовый?
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39221066
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ыудусеchpashaчто за бредовый вопрос?

Почему бредовый?
Потому что в нем не прослеживается смысла. Ну т.е. ты-то знаешь, о чем говоришь и сейчас видимо искренне удивлен, но вот я из твоего вопроса нихрена не понял. Начиная с "можно ли заинжектить". АА не занимается вопросами dependency injection
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39221110
ыудусе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaПотому что в нем не прослеживается смысла. Ну т.е. ты-то знаешь, о чем говоришь и сейчас видимо искренне удивлен, но вот я из твоего вопроса нихрена не понял. Начиная с "можно ли заинжектить". АА не занимается вопросами dependency injection

А это что?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@EActivity
public class MyActivity extends Activity {

    /* A MyImplementation instance will be injected. 
     * MyImplementation must be annotated with @EBean and implement MyInterface.
     */
    @Bean(MyImplementation.class)
    MyInterface myInterface;

}



отсюда
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39221176
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ыудусеА это что?
это фигня в стиле "почти беременна". какой смысл писать интерфейс и тут же по месту указывать, что вместо него будет класс А.
настоящая Dependency Injection это когда ты в конфигурации указываешь реализацию
Код: java
1.
bind(MyInterface.class).to(MyInterfaceImplementationWithAA.class) 



а в коде у тебя зависимость только от MyInterface.

Код: java
1.
@Inject MyInterface myInterface



По-этому вопрос по-прежнему не понятен, вернее теперь вопрос понятен, а цель - нет. Ты хочешь сделать тоже самое, что в примере, но с абстрактным классом?
ну попробуй - я не вижу технических причин, почему это не должно работать, но возможно это не будет работает просто, потому что автор АА подумал про фокус с интерфейсом и не подумал про тоже самое с абстрактным классом (т.е. у него в коде тупо валидация может стоять на наличие интерфейса). С точки зрения ява кода нет никаких преград. Но с точки зрения архитектуры приложения - это страдание фигней. Нужна настоящая DI, юзай DI, roboguice например. АА не для этого (но хорошо вписывается, поскольку по сути является генератором "имплементаций")
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39279930
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто то юзал Butter knife ?

В чем разница ?
...
Рейтинг: 0 / 0
AndroidAnnotations
    #39279975
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжибсВ чем разница ?
в аа больше всего. намного. по сути в butterknife только инъекция вьюх и пару обработчиков событий. в аа передача параметров в активность/фрагмент, интенты, автоматическое сохранение данных (onsaveinstance/onrestore), background- процессы, onactivityresult, инъекция сервисов, создание и обработчики событий меню, sharedpreferences.
имхо слон и моська. единственная интересная штука в butterknife, инъекция в viewholder, в аа такое не прокатит, но думаю можно плагин написать (тоже кстати плюс)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
AndroidAnnotations
    #39678081
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пришлось кое-что поменять в своем старом проекте в связи с изменениями в сдк, студии и т.п.
Сделал следующие изменения, чтобы снова все работало:

build.graddle проекта (apt теперь не нужен):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        //classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}



Соответственно в build.graddle модуля (приложения) так же убираются все упоминания об apt
Код: xml
1.
apply plugin: 'com.android.application'


В buildTypes так же изменения (чтобы сгенерированный apk имел имя файла более осмысленного вида ru.wadman.somename-1.0-release.apk)
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    buildTypes {
        debug {
            minifyEnabled false
            debuggable true
        }

        release {
            minifyEnabled true
            debuggable false
            signingConfig signingConfigs.release
            proguardFiles 'proguard-rules.txt'
            applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    outputFileName = defaultConfig.applicationId + "-" + defaultConfig.versionName + "-" + variant.buildType.name + ".apk"
                }
            }
        }
    }



И зависимости чуть изменились:
Код: xml
1.
2.
3.
4.
5.
6.
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    annotationProcessor "org.androidannotations:androidannotations:4.4.0"
    api 'org.androidannotations:androidannotations-api:4.4.0'
    api 'org.jetbrains:annotations-java5:15.0'
}

...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Android [игнор отключен] [закрыт для гостей] / AndroidAnnotations
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]