Мне кажется, что в секции «Перестановка инструкций» некоторая неточность. Если оба метода запускаются кем-то из разных потоков, то не нужен Task. Если же Foo запускает Bar через Task, то для «одновременности» нужно вызвать task.Start(); до присвоения полей.
Немного не понял вот это — «На большинстве платформ… все записи и чтения являются volatile write и volatile read». Тогда почему все же необходимо ключевое слово volatile?
Я не имел в виду переход на синхронные операции. Достаточно перед выполнением запроса прикопать callback из activity, а уж после завершения запроса вызвать его, передав полученные данные. Но так-то да, в этом случае и activity, и объект, выполняющий запрос, будут знать об этом callback'e, что увеличивает связность.
А если передавать не Broadcast'ом, а через какой-нибудь callback? Понятное дело, будет сложнее организовать правильную связку, но зато не будет лимита. Я, кстати, не уверен, что Intent изначально рассчитан на передачу большого объема данных, и такое ограничение выглядит довольно разумным. Жаль только, что оно неявное.
Еще один момент. В SL приложениях есть опция по уменьшению размера XAP, когда подключенные сборки публикуются отдельными zip-архивами. Это работает для всех сборок, включенных в приложение, которым сопоставлен файл .extmap. Но если сборка не нужна приложению напрямую (используется через одну и более зависимых сборок), то такой номер не проходит, поэтому приходится делать лишние референсы. Можно ли сделать опцию для SL приложений, которая бы проверяла этот случай и не удаляла подобные «ненужные» ссылки?
Будет ли реализован какой-либо API для получения переводов, истории поиска и т.п.? Как насчет интеграции с другими приложениями, как это сделано в ColorDict, Fora? Если все это планируется, я бы поучаствовал в тестировании подобной функциональности.
Я с вами полностью согласен с позиции пользователя. Маркет предлагает массу довольно хороших, полезных и бесплатных приложений. Если вам не нужно что-то реально специфическое, дальше топа даже ходить не нужно, пусть за вас это делают другие, кому не лень (ведь в топ двигают такие же пользователи, как мы с вами).
Однако с позиции разработчика, особенно начинающего, ситуация выглядит немного иначе. Мало сделать что-то лучше других. Нужно обладать умением продвинуть свое произведение, а этот талант уже не связан напрямую с творчеством разработки и у многих его вообще нет. И чем больше мусора в Маркете, тем меньше вероятность, что вашу программу заметят.
Месяц назад на очередном GTUG, посвященном Honeycomb, я задал вопрос про модерацию докладчику из Google после того, как он похвалился количеством приложений в Маркете. Ответ был примерно таким: «Андроид — открытая платформа, поэтому ни мы, ни вы не можете решить, что достойно находиться в Маркете, а что нет. Порой даже сущая безделушка (бред), которая никогда бы не прошла модерацию, пользуется популярностью. Единственное, с чем мы боремся — это вредоносные программы. Вы можете сообщить о подобном приложении и наша команда удалит его, если ваши слова подтвердятся проверкой.»
Следующий мой вопрос был про «Hello world» приложения, которые заливают в Маркет с целью «получить навык». Ответ — «Ну они же заплатили свои $25 — имеют право!»
А можно подробнее про варианты использования? Было бы здорово в общих чертах узнать реальное применение, где крутятся сервисы, какого типа приложения их используют и как. А то пример реализации IF в визуальном редакторе ну никак не намекает на какие-либо преимущества WWF.
Ммм… немного некорректный пример, так как новый поток сам является источником корней для графа объектов и его-то GC собирать не будет, но ответ про «не умрет» все равно верный, так как, по сути, основной поток навсегда замирает в конструкторе объекта.
Меня больше беспокоит, что ссылка на объект Server нигде не сохраняется. Не умрет ли он в релизной сборке? Кстати, в конкретном примере финализатор будет вызван только при остановке приложения и исключение в нем самому приложению не повредит. Ну а IDisposable нужен только там, где управление освобождением ресурсов осуществляется (или подразумевается, что будет осуществляться) вручную.
Простите, я немного не понял, каким образом связана асечка и свободное ПО. Вы вместе с подругой потратили вечер, чтобы собрать свой собственный билд, зафиксили пару дефектов и залили их в транк?
Знаете, если я буду жену кормить две недели только черным хлебом, она тоже осознает, что Макдональдс — наше все. Ну и что СПО тоже наше все, до кучи.
Сюрпризы приносит абсолютно любое ПО, никто не застрахован от ошибки.
Немного не понял вот это — «На большинстве платформ… все записи и чтения являются volatile write и volatile read». Тогда почему все же необходимо ключевое слово volatile?
Однако с позиции разработчика, особенно начинающего, ситуация выглядит немного иначе. Мало сделать что-то лучше других. Нужно обладать умением продвинуть свое произведение, а этот талант уже не связан напрямую с творчеством разработки и у многих его вообще нет. И чем больше мусора в Маркете, тем меньше вероятность, что вашу программу заметят.
Следующий мой вопрос был про «Hello world» приложения, которые заливают в Маркет с целью «получить навык». Ответ — «Ну они же заплатили свои $25 — имеют право!»
Знаете, если я буду жену кормить две недели только черным хлебом, она тоже осознает, что Макдональдс — наше все. Ну и что СПО тоже наше все, до кучи.
Сюрпризы приносит абсолютно любое ПО, никто не застрахован от ошибки.
Нет, он не стал закрытым, этот коммент был про наилучший дизайн.
Я более чем уверен, что это все благодаря стараниям Google.
Думаю, что серьезные оптимизации и нововведения тоже исходят от них.
Кто платит за найденные баги Chrome?
Или думаете, что фиксы не попадают в Chromium?
Мне все же кажется, что здесь ключевое слово — Google…