Перейти к содержанию
Fire Monkey от А до Я

Andrey Efimov

Модераторы
  • Постов

    851
  • Зарегистрирован

  • Победитель дней

    129

Весь контент Andrey Efimov

  1. Ссылка: http://delphifmandroid.blogspot.ru/2016/06/google-play.html Автор: Андрей Ефимов Описание: В этой заметке я ответил на два самых частых вопроса: Как сделать, чтобы сертификат выбирался автоматически? Как выбрать сертификат по умолчанию? Как обновлять приложение в маркете?
  2. Andrey Efimov

    Geofencing

    Geofencing <> BeaconFence Geofencing - основана на вычислении примерного местоположения, используя вышки мобильных операторов. BeaconFence - предлагает сделать "вышки" самостоятельно, из Beacon маячков. p.s. Вот ваша тема по BeaconFence
  3. В общем, потестил малость, набросал приложение, сканирующее System32. Дано: 3181 файл (+1 новый для проверки) база с двумя одинаковыми таблицами (по два столбца(id, FileName) в каждой) Результаты: Проверка в цикле, каждый раз по запросу "SELECT * FROM tblFileName WHERE FileName = Имя файла", очень накладно получается примерно 4.8 сек. (4758мс) Проверка с созданием и заполнением временной таблицы и запросом типа такого "select * from `temp` where FileName not in (select FileName from `tblFileName`)", достаточно быстро - 0.4 сек (437мс) Ваш способ - примерно 2.2 сек. (2168мс) Важно заметить, что во втором случае, время замерялось на две задачи, заполнение временной таблицы и сравнение, посредством одного запроса в бд. В первом же случае, данные сразу сравнивались, т.е. замерялся цикл запросов(3181 шт.) на выборку. Выбор очевиден Не знаю, что мне взбрело в голову в предыдущем сообщении...))) По поводу Limit, это ключевое слово позволяет не только ограничивать количество выбираемых данных, но и делать выборку блоками, например по 500 записей за раз (select FileName from `tblFileName` LIMIT 1,500), подошло бы, если бы нужно было извлекать блоками по 500 записей. вот такой запрос: FDQuery2.SQL.Clear; FDQuery2.SQL.Add('SELECT * FROM tblFileName'); FDQuery2.Active := True; FDQuery2.Open; if not FDQuery2.IsEmpty then begin FDQuery2.Last; mLogs.Lines.Add('Всего записей: ' + FDQuery2.RecordCount.ToString); mLogs.Lines.Add('ID последней записи: ' + FDQuery2.FieldByName('ID').AsString); end; FDQuery2.Close; Работает без проблем, извлекает сразу все записи. p.s. Тесты проходили на Windows 7 Pro.
  4. Заметка основана на официальной документации System.IOUtils.TPath.GetDocumentsPath. Ну, это уже особенности устройства... может там рут права стояли? интересно, что за устройство...
  5. Название: WiFi Info Платформа: Android 4.1.2 или более поздняя Тип устройства: смартфон, планшет Актуальная версия: 1.1.0 Ссылка: Google Play Описание: Приложение позволяет просматривать полную информацию об активном подключении, сканировать Wi-Fi точки и просматривать информацию о них, а также просматривать информацию о конфигурациях для сохранённых точек доступа. Есть возможность настроить автоматическое обновление информации. Поддержка Android 4.1.2 и выше. Приложение протестировано на устройствах: LG-P705 - Android 4.1.2 Huawei Y541-U02 - Android 4.4.2 Xiaomi Redmi Note 3 - Android 5.0.2 LRX22G (MIUI by xiaomi.eu stable 7.3.1) Samsung SM-T585 Galaxy Tab A 10.1 - Android 7.0
  6. По поводу доступа, гляньте вот эту заметку http://delphifmandroid.blogspot.ru/2014/02/deployment-manager.html (обратите внимание на картинку)
  7. Итак, если речь про Андроид, то вы скорее всего поступаете не правильно. База и без вашего массива(клона) висит в памяти, а вы хотите ещё нагрузить... А если записей станет 100 000?! и не известно какая там ещё структура таблицы... Это я вот к чему, вы же скорее всего сравниваете по какому-то столбцу, так и извлекайте нужный вам столбец, а не все сразу. Далее, я не стал бы извлекать все записи в массив, т.е. создавать клон базы, проще попробовать выполнить запрос по извлечению/поиску конкретной записи и посмотреть на скорость отработки. Мне думается, это будет менее затратно... Не делайте так Результаты тестов ниже. (это моё ИМХО, но другие обоснованные мнения приветствуются , я тоже бываю не прав...) Если вы всё же используете свой способ, то воспользуйтесь ключевым словом "Limit". Справка по Select (SQLite) А вообще, дайте больше информации: Какая платформа? Какая структура таблицы? Что с чем нужно сравнивать?
  8. Написал статейку по вашей теме [Google Play] Публикация приложения в Google Play
  9. Ссылка: http://delphifmandroid.blogspot.ru/2016/06/google-play-google-play.html Автор: Андрей Ефимов Описание: Публикация приложения в Google Play
  10. Для вопроса создайте отдельную тему в разделе iOS, т.к. эта тема уже в разделе Андроид.
  11. Интерфейс. Кратко: Нерациональное использование места на некоторых скринах. Теперь подробнее, мне не нравится когда Табы в несколько строк, может быть стоило бы придумать что-то с МультиВью и вынести туда основные пункты меню(Отметки и История). Контроллы на третьем скрине занимают 50% экрана - не хорошо, например, вы выделили целую строку под два слова: "От" и "До", при этом говорите, что там может выводиться море табличной информации... Пользователь ведь, ставит приложение не для того, чтобы любоваться контроллами занимающими половину экрана, ему нужно увидеть как можно больше информации... Тоже мнение и насчёт второго скрина + выше уже вам подсказали насчёт дневных отметок. А 4 скрин - это меню Сервис? Зачем там две кнопки "Закрыть"? Просили посоветовать, а получилось покритиковал немного... Не претендую на лучшие мысли в плане интерфейса, но считаю, что он перегружен контроллами. Если что, обидеть не хотел... p.s. В маркете, вроде видел подобные приложения, попробуйте посмотреть их и оценить, возможно получится почерпнуть что-то уникальное/новое/более правильное для вашего приложения. "Хочешь сделать хорошо - делай лучше, чем у конкурентов" (c)
  12. А вам нужно, чтобы пользователь сам кликнул по кнопке "Найти"? Просто если это не нужно, то можно сразу открывать страницу поиска с результатами Яндекс - https://yandex.ru/search/?text=Тест
  13. Выгружать будет в любом случае, вот сервис бы помог (вообще решил бы наверно все ваши проблемы). В вашем же случае, наверно стоит попробовать повесить таймер или ещё что-то, нужно смотреть как будет реагировать (на индивидуальные и комплексные меры)... И всё же, я сомневаюсь, что получится добиться постоянно висящего в памяти приложения. Может, кто-то ещё сможет подсказать рабочее решение... p.s. С маячками дел не имел...
  14. Для сохранения состояния - посмотрите, вот этот хелп FireMonkey Save State. Не вижу смысла держать приложение в памяти, если оно ничего (полезного) не делает. В общем-то, Андроид также считает
  15. 1) DirtyBorov и Vitaldj, выяснять отношения принято в личке 2) DirtyBorov, Vitaldj, asviridenkov - у нас не медицинский форум, чтобы обсуждать чудодейственные способы лечения всего и вся 3) Если кого-то из вас, интересует работа с определённым устройством, то создавайте отдельную тему по устройству и там обсуждайте стандарты работы и т.п. (напоминаю, эта тема про TMS Pack) p.s. Тему сейчас почищу. p.s.2. Если есть вопросы, добро пожаловать в личку.
  16. Вот сюда "https://quality.embarcadero.com/secure/Dashboard.jspa" продублируйте проблему.
  17. Тема создана в разделе Android, не вмешивайте сюда iOs. Сервисов в C++ Builder пока что нет...
  18. 1) Заходим в тему с приложением победителя: [1C-Papyc] Мобильное приложение для мастеров-приемщиков сервсиных автоцентров на ОС Android 2) Кликаем по нику победителя и проходим на страницу профиля: Кривяков Виталий 3) И видим заветную тему: TUITabControl
  19. Думаю, тут всё зависит от сложности проекта, если проект большой и много чего использует, то и компилиться долго будет... p.s. Сейчас попробовал запустить тестовое приложение, которое ещё разрабатываю (почти завершил этап проектирования интерфейса, позже можно будет увидеть проект в маркете), контроллов создаётся в среднем (наверно...) количестве. В общем, скомпилилось (так называемая холодная компиляция) и запустилось на устройстве за 1 минуту и 41 секунду. Если приложение уже хоть раз было скомпилено, то последующие компиляции проходят быстрее... p.s.2. Для меня и это быстро :), вот раньше долго компилились проекты, после Сиэтла ситуация изменилась...
  20. Студия и на 2Гб пашет как надо (Windows 7 Pro). Если всё (браузер и т.п.) закрыть и оставить только её (ну ещё антивирь и т.п.), то оперативы свободно ещё 1.2 Гб, при таких условиях компиляция под Андроид происходит очень быстро. p.s. При этом студия может работать с раннего утра и до поздней ночи (например, в выходные...), и она не одна может использоваться (ещё всякие фотошопы, Visual Studio 2015, Skype, Flash Player (под большой нагрузкой) и т.д.). Хотя, не спорю, бывают моменты когда притормаживает, но это бывает очень редко.
  21. Andrey Efimov

    OnButtonClick

    Багу завёл.
  22. Andrey Efimov

    OnButtonClick

    Ага, не обратил внимания. Тогда только ваш способ. Получается косяк в справке, т.к. там написано procedure TForm1.ListView1ButtonClick(const Sender: TObject; const AItem: TListViewItem; const AObject: TListItemSimpleControl); begin ShowMessage(AItem.Text + ' ' +AItem.ButtonText + ' is clicked.'); end; т.е. мой способ был бы рабочим если бы в событии приходил TListViewItem, а не TListItem. p.s. Пруф на справку: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Mobile_Tutorial:_Using_LiveBindings_to_Populate_a_ListView_%28iOS_and_Android%29#Step_5:_Adding_the_onButtonClick_Event_Handler
  23. Andrey Efimov

    OnButtonClick

    Может быть вот так (!Berlin!): на С++ AItem->Objects->TextButton->Text = 'Test'; на Делфи AItem.Objects.TextButton.Text := 'Test';
  24. Да и правда, совсем забыл, что Ярослав уже "запилил" компонент. p.s. Основы, тоже полезно иногда читать
  25. https://developer.android.com/guide/topics/ui/notifiers/toasts.html
×
×
  • Создать...