从N9上的应用程序屏幕恢复MeeGo Harmattan Qt应用程序

Restore MeeGo Harmattan Qt application from Apps Screen on N9

本文关键字:应用程序 MeeGo Harmattan Qt 恢复 屏幕 N9      更新时间:2023-10-16

我正试图在Ovi商店上发布我的第一个N9应用程序,但我没有通过QA:

摘要:在后台暂停应用程序后,应用程序无法通过单击应用程序图标返回到前面。复制步骤:1.下载并安装内容。2.启动应用程序。3.在后台暂停应用程序。4.单击应用程序图标。实际结果:单击应用程序图标时没有响应。预期结果:应用程序背靠背。内容文件中的功能和控件必须按规定运行。

我的应用程序是用C++和Qt编写的,有一个QWidget。在主要功能中,我调用

Widget w;
w.showFullScreen();

我还覆盖eventFilter

bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::ActivationChange && m_created) {
        if (isActiveWindow()) {
            resume();
        }
        else {
            pause();
        }
    }
    return QWidget::eventFilter(object, event);
}

但是当重现这个bug时,我根本无法访问eventFilter。当我按下图标时,我应该怎么做才能回到我的应用程序?

正确的方法是使用applauncherd通过调用invoker来启动应用程序。你也可以使用它的助推器功能来缩短应用程序的启动时间(通过使用MDeclarativeCache)。

以下是关于如何使用invoker的文档:
http://harmattan-dev.nokia.com/docs/platform-api-reference/showdoc.php?pkn=applauncherd-用户文档&wb=每日文档&url=Li94bWwvZGFpbHktZG9jcy9hcHBsYXVuY2hlcmQtdXNlci1kb2N1bWVudGF0aW9u

以下是如何使用MDeclarativeCache
http://harmattan-dev.nokia.com/docs/platform-api-reference/showdoc.php?pkn=applauncherd-mdeclarativache文档&wb=每日文档&url=Li94bWwvZGFpbHktZG9jcy9hcHBsYXVuY2hlcmQtbWRlY2xhcmF0aXZlY2FjaGUtZG9jdW1lbnRhdGlvbg%3D%3D

经过一些实验,我找到了解决方案。这有点奇怪,但它有效:

bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::ActivationChange)
    {
        if (isActiveWindow())
        {
            resume();
        }
        else
        {
            pause();
        }
    }
    else if (event->type() == QEvent::SockAct) // pure magic
    {
        activateWindow();
        resume();
    }
    return QWidget::eventFilter(object, event);
}

按下主屏幕上的图标后,filetr QEvent::SockAct并恢复应用程序。