在Android下用Qt开发后台运行的程序总结

drfxiaoliuzi 2019-01-10 05:56:34
最近项目需求,需要移植到Android下,探索了许久才找到一个简单的后台运行的方法,具体如下:
目前用Qt开发的程序已移植到了windows、linux以及Android三个系统,但是Android不同于windows和linux,后两者能够使程序最小化窗口运行,对第三方调用的软件无影响,但是Android系统下把程序放到了非主界面后,就处于休眠状态,不再运行,因此需要考虑将Android下的程序做成服务,这样就可以保证程序最小化后,依旧能够在后台保持激活状态。
示例代码如下:
Int main(int argc, char*argv[])
{
#if defined(Q_OS_ANDROID)
QAndroidService a(argc, argv); //这个消息事件的循环可以实现Android服务
//Android服务下不能有界面,因为界面需要QApplication才行
//逻辑处理部分
return a.exec()
#else
QApplication a(argc, argv);
//逻辑处理部分,可以有主界面的
return a.exec();
#endif
}
虽然这样可以后台运行,但是在程序启动的时候,还是占据着主界面,需要有个最小化的功能,此时可以通过JNI来调用.java实现,示例代码如下:(具体用法可以看Qt on android核心编程 这本书)
QAndroidJniObject javaNotification = AndroidJniObject::fromString(infoMsg);
QAndroidJniObject::callStaticMethod<void>("com/hisense/hictp3/NotificationClient","mini","(Ljava/lang/String;)V",javaNotification.object<jstring>());

Java部分代码就调用一个函数
m_instance.moveTaskToBack(true);

但是有几个问题:
1、 程序放在后台,当Android内存不足时,会清理掉的;
2、 这个程序不能有界面,若需要界面,则另外写一个app。
...全文
3523 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38592952 2019-08-12
  • 打赏
  • 举报
回复
你可以参考一下:https://doc.qt.io/qt-5/android-services.html#和https://wiki.qt.io/AndroidServices这里有创建服务的方法
彩阳 2019-01-27
  • 打赏
  • 举报
回复
你将QApplication换成 QCoreApplication试试看?

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧