1

Brewアプリケーションには、アクティブ、サスペンド、バックグラウンドの3つのタイプがあることを知っています。1 つの BREW アプリケーションをアクティブまたはサスペンドとして起動するのは非常に簡単です。BREW2.0 以降のバージョンでは、バックグラウンドで 1 つのアプリケーションを作成できる新しいアプリケーション タイプがあります。アプリケーションスタックにとどまらず、アクティブまたは再開コマンドによってステータスが変更されません。ユーザーコマンドシステムが受け取ったものに関係なく、常にバックグラウンドに留まります。私の小さなプロジェクトの 1 つで、このようなバックグラウンド アプリケーションを 1 つ作成して起動する必要があります。

残念ながら、Qualcomm や Google で簡単な例を見つけることができません。同じ問題に遭遇したプログラマーはいますか?

4

1 に答える 1

0

はい、あなたは正しいです。BREW2.0+ はバックグラウンド アプリケーションをサポートします。

バックグラウンド アプリケーションを初期化すると、他の通常の新しいアプリケーションと同様に、brew アプリケーション インターフェイスから直接起動できます。ISHELL_StartApplet 関数で起動することもできます。

1 つの Brew アプリケーションをバックグラウンドに置きたい場合は、EVT_APP_STOP イベントを処理するときにそれを行う必要があり、dwParam を false に設定する必要があります。これにより EVT_APP_STOP を処理した後、アプリケーションはバックグラウンドに置かれます。また、通常のアプリケーションに変更したい場合は、 ishell_StartApplet 関数を呼び出して、自分自身を再度アクティブにする必要があります。

コード例:

    typedef struct _bgApp
    {
        AEEApplet a;
        boolean m_bGoBg;
    } bgApp;

    switch (eCode)
    {
    case EVT_APP_START:
        if(pMe->m_bGoBg)
            ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE); 
    case EVT_APP_STOP:
        if(pMe->m_bGoBg)
            *((boolean*) dwParam) = FALSE;
        return TRUE;
    case EVT_USER:
        if(pMe->m_bGoBg)
        {
            pMe->m_bGoBg = FALSE;
            // make applet active
            ISHELL_StartApplet(pMe->a.m_pIShell, AEECLSID_BGAPP);   }
        else
        {
            pMe->m_bGoBg = TRUE;
            // trigger EVT_APP_STOP to send app to background
            ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE); 
        }
        return TRUE;
    }      

バックグラウンドアプリケーションの制限があります。画面を変更したり、ユーザーと直接通信したりすることはできません。開発者は、バックグラウンド アプリケーションが使用するメモリに注意する必要があります。これはとても重要です。

于 2013-12-23T07:00:18.390 に答える