crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Android. Процесс, запущенный в отдельном потоке, завершается через время если приложение свернуть
MishaUA
  опции профиля:
сообщение 30.3.2018, 0:48
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


Доброго времени суток!
Делаю простенькое приложение под андроид, вот часть кода:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainThread  thr;

    MainWindow w;
    w.show();

    return a.exec();
}

Т.е., запускается отдельный потом и главное окно (да, нужен QML, но это просто для тестов). Если приложение свернуть, то MainWindow, как бы, замирает(вроде так и должно быть), а MainThread нормально выполняется (принимает данные по сети и отправляет), но через какое-то время (несколько минут) он перестает отвечать. Получается, процесс был завершен, ну или вообще прога завершилась.
Как можно сделать так, чтобы приложение/процесс не завершались?
Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.3.2018, 7:33
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


MishaUA, очевидно, что нужно не доходить до строки
return a.exec();
, а ждать, пока поток thr не разрешит это сделать

а окно можно скрыть
w.hide();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 30.3.2018, 10:12
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


эм, то есть, нужно выполнить a.exec(), после этого ждать пока не завершиться поток и только потом выполнять return?

к стати, а как тогда отреагировать на разворачивание приложения?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 30.3.2018, 11:17
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


Нашел у QApplication опцию setQuitOnLastWindowClosed, которой можно отключить выход с приложения по закрытию главного окна.


блин, не помогло, приложение все равно закрывается через время(((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 30.3.2018, 12:03
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


Поправочка - если сделать:
   int ex = a.exec();
    while(thr.isRunning());
    return ex;

То не закрывается, правда, вторая строка сильно проц грузит, но скорей всего, это можно будет легко исправить.
Осталось придумать, как как приложение может понять, что его "развернули", чтобы заново отрисовать GUI.
PS: всё таки, через время тоже вылетает(((.

Сообщение отредактировал MishaUA - 30.3.2018, 16:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 31.3.2018, 0:13
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


В общем, там надо запускать отдельно сервис, который будет крутиться. Ну и отдельно приложение с GUI.
Вот, нашел некоторый пример: https://github.com/bog-dan-ro/qt_services/ , там можно понять что к чему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 10:18