А если у вас java-bean автоматически маппится куда-нибудь по reflection через поля (JAXB, Hibernate)?
На самом деле тут всё просто — если у вас поле не может быть null, значит вызов setStrField(null) — некорректен, он нарушает контракт метода. В этом случае должен быть выброшен NPE. Это позволит отловить ошибки «обнуления» полей класса в будующем.
В этом плане конечно аннотации JSR-305 хороши, с помощью них могут быть автоматически выставлены проверки на null в байт-коде.
Что же связывает Linux, Android и Java? Открытость исходного кода и свобода распространения!
Только на таких технологиях можно создавать что-то новое в, казалось бы, не связанных областях!
А вызывать метода reflection'ами это в духе ООП =)
Вся суть xml layout'ов в Андроиде в том, чтобы отделить View от Model (хотя конечно Activity это всё ещё View, но тем не менее). Дизайнер может что-то делать со стилями, темами, расположением элементов на экране не редактируя код, а только меняя файлы разметки. Использование механизма предложенного вами — полностью убивает данную фичу. Да, собственно, темы удобнее задавать в xml (там ещё наследование стилей работает, кстати).
В качестве примера дам ссылку на исходный код своего приложения, где используется механизм тем:
1. Моя базовая тема (наследуется от Theme.Sherlock)
2. Синяя тема «Метро» (наследуется от темы выше)
3. Layout 1, Layout 2
PS При этом в самой Activity нужно просто написать setTheme(R.theme.xxx) для выставления темы — остальное Андроид сделает сам
3. Maven же отдельная тулза — IDEA его просто дёргает. Clean не делайте и будет вам инкрементальная сборка (если, конечно, для вашего типа проекта она поддерживается)
1. — 2. WeakReference я имел ввиду в другую сторону (как здесь). Ну и собственно, понятно, что создавая внутренний (для Actvity) не статичный класс вы привязываетесь к Activity.this, просто не создавайте таких классов =)
3. OK
1. Вы боялись, что у вас «потеряется» instance Activity (не знаю что это значит, но видимо, что у Activity закончится свой lifecycle).
2. Как она будет удерживаться. если я буду использовать WeakReference?
3. AsyncTaskLoader — added in API 11.
Я знаю, точно одно ограничение: WebView нельзя использовать в виджете, а TextView можно (правда я не знаю как поведёт себя такая обработка). Ну, а так — да, конечно, лучше использовать WebView.
Я к тому, что ваш ImageGetter можно было свести к:
Я к тому, что ваш ImageGetter можно свести к:
<source lang="java">
new Html.ImageGetter() {
public Drawable getDrawable(String source)
ImageLoader#loadImage(url, new OnImageLoadedListener() {
//...
void onImageLoaded(@Nullable Bitmap image) {
textView.setText(Html.fromHtml(message, image, null));
}
});
}
};
На самом деле тут всё просто — если у вас поле не может быть null, значит вызов setStrField(null) — некорректен, он нарушает контракт метода. В этом случае должен быть выброшен NPE. Это позволит отловить ошибки «обнуления» полей класса в будующем.
В этом плане конечно аннотации JSR-305 хороши, с помощью них могут быть автоматически выставлены проверки на null в байт-коде.
Только на таких технологиях можно создавать что-то новое в, казалось бы, не связанных областях!
Вся суть xml layout'ов в Андроиде в том, чтобы отделить View от Model (хотя конечно Activity это всё ещё View, но тем не менее). Дизайнер может что-то делать со стилями, темами, расположением элементов на экране не редактируя код, а только меняя файлы разметки. Использование механизма предложенного вами — полностью убивает данную фичу. Да, собственно, темы удобнее задавать в xml (там ещё наследование стилей работает, кстати).
В качестве примера дам ссылку на исходный код своего приложения, где используется механизм тем:
1. Моя базовая тема (наследуется от Theme.Sherlock)
2. Синяя тема «Метро» (наследуется от темы выше)
3. Layout 1, Layout 2
PS При этом в самой Activity нужно просто написать setTheme(R.theme.xxx) для выставления темы — остальное Андроид сделает сам
6. Тоже уже есть (читаем Help)
3. OK
2. Как она будет удерживаться. если я буду использовать WeakReference?
3. AsyncTaskLoader — added in API 11.
Реализована возможность работы с любым объектом посредством OnImageLoadedListener, при достижения определённого порога картинки кешируются на карту.
Пример работы можно посмотреть здесь: play.google.com/store/apps/details?id=org.solovyev.android.samples