@xamarin_russia

Страница 249 из 619
Летучая
29.12.2017
08:58:37
Гугли в сторону xsd файла. Мы как то это фиксили добавлением его в вижлу из xamarin studio или android studio. Хотя могу ошибаться, давно дело было
Круто, спасибо, вроде нашёл. https://forums.xamarin.com/discussion/60962/enable-intellisense-for-axml-missing-android-layout-xml-xsd-schemas-android-com-apk-res-androiod Вот почему студия сразу не могла туда нужные схемы сложить...

Кита
29.12.2017
09:27:35
1. Мы выбрали Xamarin - это уже не полноценный нейтив. Думаю, стоит смириться... в большинстве случаев долгая загрузка - это долгая загрузка в точке инициализации приложения: ioc, принудительные задержки(привет task.delay в сплешскрине андроида), доступ к бд, итд. Ну Aot мы здесь думаю исключаем, а вот с Jit тут у нас как раз и думаю проседает: много различных сборок, соответственно много подгрузок либ в рантайме. А связь с нетстандартом опять же здесь не вижу; 2. Тк мне интересно, я тоже взгляну на просадку производительности. А было бы здорово, если можно было бы как-то ознакомиться со сравнением производительности в портабл и в нетстандрте; 3. На мой взгляд, скорость загрузки приложения все таки это не производительность. Я думал, мб рантайм по-другому работает в нетстандарте. Ps, 1. Mvvmcross пытается сделать точку инициализации асинхронной. https://github.com/MvvmCross/MvvmCross/pull/1370 2. Многие популярные нагет пакеты уже держат веху в сторону перехода в нетстандарт. Или они уже перешли. Поэтому Стоит мб задуматься, тк переход на начальном этапе разработке намного легче, нежели уже в сформированном проекте; 3. А новичкам вообще не стоит знать разницу между 78, 259, 111. В нетстандарте все есть и не надо беспокоиться. Например, беспокоиться о том, что в ядро нужен HttpClient...
Рантайм и работает как раз по-другому http://www.mono-project.com/news/2016/11/29/mono-code-sharing/

Точку инициализации а точнее setContent можно сколько угодно делать асинхронной - это не поможет, потому что есть инициализация рантайма до OnCreate, которая включает в себя подключение всех dll. Кстати для меня до сих пор остается загадкой какого хрена в полном aot в пэкедж суются dll если по сути они больше не нужны

Ну и то что популярные нюгет пакеты перешли на стандарт это не аргумент. Удобство программиста это одно. Забота о пользователе это другое. Программист когда делает осознанное движение в сторону чего-то должен просчитать как это отразится на пользователях. Если негативно он это телодвижение делать не должен, а должен начать искать компромисс между своим личным удобством и удобством пользователя. Определенно мгновенный или почти мгновенный запуск аппы это положительный пользовательский опыт, который отражается на дальнейшем удержании пользователя. Думают ли про это создатели нюгет-пакетов? Нет конечно. Я утверждаю что почти мгновенная инициализация на платформе Xamarin достижима. Терять это преимущество я считаю расточительством.

Google
Serhii
29.12.2017
12:45:41
Всем привет. У меня есть ссылка, по которой картинки генерятся рандомно. Мне нужно чтобы по клику эта рандомная картинка подставлялась. В браузере тестил эту ссылку, она при обновлении страницы генерит каждый раз новую картинку. Но когда я меняю Source, картинка не обновляется. В чем может быть проблема?

private async void ChangeImage() { string imageURI = "http://lorempixel.com/400/200/sports/"; System.Uri uri; System.Uri.TryCreate(imageURI, UriKind.Absolute, out uri); Task<ImageSource> result = Task<ImageSource>.Factory.StartNew(() => ImageSource.FromUri(uri)); _img.Source = await result; }

Проект на формс. ЮАЙ на шарпе

vladimir
29.12.2017
12:51:04
https://developer.xamarin.com/api/property/Xamarin.Forms.UriImageSource.CachingEnabled/

попробуй это false

а второй вариант ставь Source в null, потом опять в твою ссылку

Serhii
29.12.2017
12:52:30
Сорс в налл уже пробовал. не отработало. Сейчас попробую отменить кеширование

vladimir
29.12.2017
12:53:04
лучше приложение удалить и пересобрать, на всякий не знаю, как кэширование работает

Serhii
29.12.2017
12:55:02
когда удалял и пересобирал, картинка новая подставлялась 1 раз, после чего кешировалась

vladimir
29.12.2017
12:56:42
я про то, что возможно убрать кэширование не достаточно, чтобы увидеть эффект сразу

это не опция, а дополнение к первому совету

Алексей
29.12.2017
13:13:53
Точку инициализации а точнее setContent можно сколько угодно делать асинхронной - это не поможет, потому что есть инициализация рантайма до OnCreate, которая включает в себя подключение всех dll. Кстати для меня до сих пор остается загадкой какого хрена в полном aot в пэкедж суются dll если по сути они больше не нужны
Да вот и не сделаешь ее просто так асинхронной, тк в большинстве случаев для полноценной работы приложения нужен целый спектр инициализированных данных. Например, вытащить данные пользователя, при Mvvm это IOC для DI. Как я знаю, если рассматривать андроид, то там инициализацию делают в сплеш скрине, чтобы убить двух зайцев: уйти от task.delay и инициализировать начальные данные. Это я еще не рассматриваю формс(благо, делаем все на классическом).

Google
Алексей
29.12.2017
13:30:26
Ну и то что популярные нюгет пакеты перешли на стандарт это не аргумент. Удобство программиста это одно. Забота о пользователе это другое. Программист когда делает осознанное движение в сторону чего-то должен просчитать как это отразится на пользователях. Если негативно он это телодвижение делать не должен, а должен начать искать компромисс между своим личным удобством и удобством пользователя. Определенно мгновенный или почти мгновенный запуск аппы это положительный пользовательский опыт, который отражается на дальнейшем удержании пользователя. Думают ли про это создатели нюгет-пакетов? Нет конечно. Я утверждаю что почти мгновенная инициализация на платформе Xamarin достижима. Терять это преимущество я считаю расточительством.
Я согласен, что мгновенный запуск это хорошо. Но нельзя на Xamarin добиться такого запуска, как в Swift/Objective C. И на мой взгляд бессмысленно тратить человеко-часы на мгновенный запуск как в Swift/Objective C. Всегда будет компромисс между Xamarin и Java/Swift/Objective C. Да и в большинстве случаев долгая загрузка приложения - косяки разработчика. Так что также не вижу связи между скоростью загрузки и нетстандартом.

Кита
29.12.2017
13:31:18
Алексей
29.12.2017
13:32:00
Потому что если application долго выполняется, то пользователь видит чёрный экран.

А в случае сплеша, он видит сплеш скрин

Кита
29.12.2017
13:32:20
Более того белый экран или черный или сплэш это не важно. У многих современных апп нет никакого сплэша.

Алексей
29.12.2017
13:36:15
Нет. Он видит сплэшскрин. А рулится это в темах
https://developer.android.com/reference/android/app/Application.html#onCreate()

Кита
29.12.2017
13:37:44
Блииин. Я расскажу как делают на самом деле

Алексей
29.12.2017
13:38:51
И чо?
В доке пишется, что этот метод должен проходить как можно быстрее, а с учётом регистрации там IOC контейнера и Jit получаем просадку производительности

Летучая
29.12.2017
13:40:45
И от иока

Кита
29.12.2017
13:41:15
ну собственно да. я использую самый производительный контейнер - DryIoc

Алексей
29.12.2017
13:41:27
Регистрация типов идет очень быстро
Если бы. В большинстве случаев берётся какая-то mvvm либа с авторегистрацией типов. А за коробкой получаем тормознутый рефлекшн .

Google
Алексей
29.12.2017
13:42:37
ну это ваши же проблемы выбора
Я не про себя говорю.

Кита
29.12.2017
13:44:15
Более того я замерял с IoC и без него - разницы на старте он сильной не дает. Разброс в рамках статистической погрешности

с DryIoc

плюс ко всему есть такая штука как кеширование в статическом методе typeof(T). тоже дает прирост на регистрации. https://stackoverflow.com/questions/353342/performance-of-object-gettype/353435#353435

В общем не так уж много надо чтобы оптимизацию провести

есть public class MainApplication : Android.App.Application, Android.App.Application.IActivityLifecycleCallbacks

Алексей
29.12.2017
13:51:54
Более того я замерял с IoC и без него - разницы на старте он сильной не дает. Разброс в рамках статистической погрешности
Это ваше право. Можете где хотите регистрировать. Я все таки склоняюсь к документации. Да и реализация регистрации IOC в mvvmcross мне кажется правильной. Там это происходит в сплеш скрине.

Кита
29.12.2017
13:53:01
public override void OnCreate() { base.OnCreate(); Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; RegisterActivityLifecycleCallbacks(this); }

все что из себя представляет OnCreate()

далее есть MainActivity с Theme = "@style/SplashTheme"

перед base.OnCreate(savedInstanceState); делаете SetTheme(Resource.Style.MainTheme);

Кита
29.12.2017
13:54:51
Все.

после base.OnCreate(savedInstanceState); появляется первый Resolve<IApplication>().Init();

Алексей
29.12.2017
13:55:28
Рантайм и работает как раз по-другому http://www.mono-project.com/news/2016/11/29/mono-code-sharing/
Честно, не нашёл ничего, связанного с просадкой производительности netstandart

Кита
29.12.2017
13:55:43
просто берете и сами замеряете

Алексей
29.12.2017
13:56:32
Летучая
29.12.2017
14:04:41
https://stackoverflow.com/questions/12607111/how-to-get-google-provided-android-resource-layout-references-in-my-mono-for-and/12875066#12875066 ух биля, вот почему андроид прожекты называют x.Droid вместо x.Android

Google
Mykhail
29.12.2017
14:58:27
Коллеги, может кто в курсе? В какой момент VS for Mac перестала генерить .app файл для iOS приложения в iPhoneSimulator/debug, а начала кидать его в iPhoneSimulator/Debug/device-builds/{id} Мучаюсь с UI тестами сейчас

Галузин
30.12.2017
10:40:32
Всем привет! подскажите плагин для скролинга ListView

Kirill
30.12.2017
11:27:14
Всем привет! подскажите плагин для скролинга ListView
Шта? Листвью скроллится по умолчанию

Галузин
30.12.2017
11:37:54
имеется ввиду бесконечная прокрутка, с подгрузкой данных

Admin
ERROR: S client not available

Max
30.12.2017
11:43:56
Что тебе не нравится

Если хочешь чтобы оно ещё и работало быстро и не лагало, делай оптимизации. Например, CachingStrategy настрой

Галузин
30.12.2017
11:47:28
да все нравится)) нужен плагин для подгрузки данных при прокрутке списка до конца

Max
30.12.2017
11:48:21
А, это из коробки не работает, один из банальных вариков - отслеживать до какого элемента отрисовано и загружать данные ещё

Галузин
30.12.2017
11:49:16
плагин все равно должен быть, стандартная задача должно быть уже хорошее решение что бы велосипед не придумывать

Max
30.12.2017
11:50:42
Не встречал, но люди подскажут, скорее всего уже есть все

Vlad
30.12.2017
13:27:05
здравствуйте. сталкивался ли кто-нибудь с проблемой в Genymotion то что если дебажить на нем в Debug, то все нормально, но если перевести проект на Releas, то пишет App, unfortunately has stopped ?

Летучая
30.12.2017
18:43:00
Галузин
30.12.2017
19:42:32
https://github.com/therealjohn/IncrementalListView работает чз байнд к ISupportIncrementalLoading
Спасибо, как раз его пробовал не получалось его запустить, уже разобрался)) спасибо

Летучая
30.12.2017
20:13:22
Господа, пытаюсь запилить кастомный контролорендерер для XamarinForms. Делаю так: [assembly: ExportRenderer( typeof(IconLabel), typeof(IconLabelRenderer))] namespace X.Droid.Controls { [Preserve(AllMembers = true)] public class IconLabelRenderer:LabelRenderer { protected override void OnElementChanged( ElementChangedEventArgs<Label> e) { base.OnElementChanged(e); if (Control == null || Element == null) return; string material = "MaterialIcons-Regular.ttf"; Control.Typeface = Typeface .CreateFromAsset( MainActivity.Current.Assets, material); Control.Text = ((IconLabel) Element).Icon; } } } Но ничего не работает, каждый раз получаю плевок в морду в виде "TargetInvokationException", который вообще непонятно откуда вылетел. Поймать это нечто не представляется возможным, try catch в активите не работает, try catch в функциях рендерера тоже. ЧЯДНТ? За что его дёрнуть, чтоб он проср#### и заработал? Спасибо.

Andriy
30.12.2017
20:32:33
/stat@combot

Google
Combot
30.12.2017
20:32:33
combot.org/chat/-1001078768598

Летучая
30.12.2017
20:39:31
<Label FontFamily="MaterialIcons-Regular.ttf#MaterialIcons-Regular" Text="" /> Так тоже не работает! UPD: Ой, ой! Тут ксамарин не виноват, это Рыба на нетрезвую голову кодирует! <Label FontFamily="MaterialIcons-Regular.ttf#MaterialIcons-Regular" Text="&#xE87D;" /> Вот так всё хорошо и правильно работает!

Combot
31.12.2017
04:50:42
combot.org/chat/-1001078768598

Maxim
31.12.2017
11:01:26
Всех с наступающим новым годом Не подскажете русскоязычные ресурсы по XAML, видеокурсы А ещё что-нибудь с Xamarin, кроме как metanit

Max
31.12.2017
16:06:49
С наступающим коллеги, счастья + здоровья

Artem
31.12.2017
17:58:10
С наступающим друзья превозмогатели)

Летучая
31.12.2017
17:58:52
С наступающим друзья превозмогатели)
За душу взяло. С наступающим, господа и дамы!

Vladislav
31.12.2017
18:20:57
С наступающим, в следующем году будем превозмогать в два раза больше

Evgeniy
31.12.2017
18:21:37
С наступающим, товарищи! Всем творческих успехов) Счастья и здоровья)

NoNick
31.12.2017
20:33:17
/stat@combot

Combot
31.12.2017
20:33:17
combot.org/chat/-1001078768598

NoNick
31.12.2017
20:33:22
Здорова

Как у райдера с моногеймом/ксамарином?

Max
31.12.2017
20:34:10
Как у райдера с моногеймом/ксамарином?
Топ вопрос, на самом деле ищр зим прроомнаеассмпн

Страница 249 из 619