|
|||||||
Как работает программа, перемещенная в фон в чистом Qt и в QML-приложении под Android
Время создания: 23.01.2019 16:10
Текстовые метки: qt, qml, c++, фон, фоновый режим, background, свернуто, android, андроид
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - QML
Запись: xintrea/mytetra_syncro/master/base/1548249057ae1h5db4yz/text.html на raw.github.com
|
|||||||
|
|||||||
Программа, написанная на Qt, имеет внутри себя основной цикл, с помощью которого происходит управление частями программы: выполняюься реакции на события, отрабатывают слоты, крутятся таймеры и прочее. Ниже рассказываются особенности работы программы, когда она погружается в фон Qt на десктопе При "сворачивании" окна программы происходит следующее:
QML на Android При сворачивании программы с помощью центральной кнопки "o" в список запущенных приложений, в QML-программе на Android происходит следующее:
Но в AndroidManifest.xml можно сделать настройку, чтобы при попадании программы в фон, основной цикл событий не останавливался. Для этого нужно изменить следующую настройку: <meta-data android:name="android.app.background_running" android:value="true"/> С такой настройкой программа начинает работать так же как Qt-программа на десктопе. Вот какие подробности известны об этой опции (перевод): При установке этой опции будет экспортирована переменная окружения QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED, которая будет проверяться с помощью собственного кода QT и остановит диспетчер событий (с тех пор не будет вызван QCoreApplication::processEvents) для части QT приложения, когда основное действие было остановлено или приостановлено на onStop() и onPause(). Таким образом, это означает "замораживание" цикла событий Взято отсюда: http://qaru.site/questions/11539020/what-does-androidappbackgroundrunning-in-androidmanifestxml-mean |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|